gwt-phonegap FileReader 不工作 (iOS)
gwt-phonegap FileReader not working (iOS)
我正在尝试使用 gwt-phonegap
(cordova/phonegap
的包装器以简化 GWT 应用程序中的使用)从 iOS
设备读取文件。
根据教程 (https://code.google.com/p/gwt-phonegap/wiki/FileModule),我需要先请求文件系统,然后获取我要读取的文件的文件条目,最后创建一个 reader,注册 onload 回调,然后调用 reader.readAsText(fileEntry);
.
一切正常,除了永远不会回调处理程序。
我还注册了所有其他回调 - none 被调用。这很奇怪。至少应该调用错误回调。
这似乎是 gwt-phonegap 中的错误。
通过阅读 Cordova 的文档,我注意到 readAsText
的原始 Cordova 版本需要一个文件而不是文件条目,但是,readAsText
的 gwt-phonegap 版本需要一个文件条目。这看起来很奇怪。所以我检查了 FileReaderJsImpl 的代码,它是 gwt-phonegap 包装器的实际实现。确实,直接使用文件条目是错误的。
我复制了 class 并用以下修复程序替换了 readAsText0
操作,解决了 readAsText
的问题(readAsDataUrl
需要类似的修复程序):
private native void readAsText0(JavaScriptObject entry) /*-{
var that = this;
entry.file(gotFile, fail);
function gotFile(file) {
that.readAsText(file);
}
function fail(error) {
// should be forwarded to caller somehow
}
}-*/
我正在尝试使用 gwt-phonegap
(cordova/phonegap
的包装器以简化 GWT 应用程序中的使用)从 iOS
设备读取文件。
根据教程 (https://code.google.com/p/gwt-phonegap/wiki/FileModule),我需要先请求文件系统,然后获取我要读取的文件的文件条目,最后创建一个 reader,注册 onload 回调,然后调用 reader.readAsText(fileEntry);
.
一切正常,除了永远不会回调处理程序。
我还注册了所有其他回调 - none 被调用。这很奇怪。至少应该调用错误回调。
这似乎是 gwt-phonegap 中的错误。
通过阅读 Cordova 的文档,我注意到 readAsText
的原始 Cordova 版本需要一个文件而不是文件条目,但是,readAsText
的 gwt-phonegap 版本需要一个文件条目。这看起来很奇怪。所以我检查了 FileReaderJsImpl 的代码,它是 gwt-phonegap 包装器的实际实现。确实,直接使用文件条目是错误的。
我复制了 class 并用以下修复程序替换了 readAsText0
操作,解决了 readAsText
的问题(readAsDataUrl
需要类似的修复程序):
private native void readAsText0(JavaScriptObject entry) /*-{
var that = this;
entry.file(gotFile, fail);
function gotFile(file) {
that.readAsText(file);
}
function fail(error) {
// should be forwarded to caller somehow
}
}-*/