PhoneGap FileReader / readAsDataURL不触发callback

我正在使用PhoneGap Build来构buildiOS v7.1 +应用程序并使用weinre进行debugging。 我正在使用媒体捕获插件和文件API来捕获video,以获取其base64表示forms。 我可以让录像机打开,拍摄一个video,并返回文件path。 然后,我使用resolveLocalFileSystemURL()来获取resolveLocalFileSystemURL()所需的文件对象。 问题是FileReader永远不会调用onloadendcallback。

我一整天都在瞎忙。 把console.log()放在我能想到的地方。 我检查,以确保iOS版本的支持 。 每个variables都是我期望的,但是callback函数根本就没有被调用。 我也尝试设置所有其他callback,但他们都没有被调用。 我试图用readAsDataURL()replacereadAsDataURL() ,但我仍然得到bupkis。 我试过等了五分钟,因为我认为asynchronous调用可能会花一点时间,但还是一无所获。

以下是我的代码。 下面是控制台输出。

 var elements = new Object(); elements["video"] = $("#window_incident_create > .video > source")[0]; navigator.device.capture.captureVideo( function(files) { for ( var i in files ) { var file = files[i]; var name = file.name; var path = file.fullPath; if ( path.indexOf("/private") === 0 ) path = "file://" + path.substr(8); else path = "file://" + path; var type = file.type; var lastModifiedDate = file.lastModifiedDate; var size = file.size; var reader = new FileReader(); reader.onloadend = function(event) { console.log(3); elements["video"].type = type; elements["video"].src = "data:" + type + ";base64," + event.target.result; console.log(4); }; window.resolveLocalFileSystemURL( path, function(entry) { console.log(1, entry.nativeURL); reader.readAsDataURL(entry); console.log(2); }, function(error) { console.log("0-0", error); } ); } }, function(error) { console.log("0-1", error); }, { limit: 1 } ); 

1“file:///var/mobile/Applications/AB239984-FB9F-43C0-B699-3596AC8A43A8/tmp/capture/capturedvideo.MOV”

2

稍微重新组织你的代码。 将resolveLocalFileSystemURL成功callback中的reader初始化和onloadendcallback。

像这样的东西:

 var elements = new Object(); elements["video"] = $("#window_incident_create > .video > source")[0]; navigator.device.capture.captureVideo( function(files) { for ( var i in files ) { var file = files[i]; var name = file.name; var path = file.fullPath; if ( path.indexOf("/private") === 0 ) path = "file://" + path.substr(8); else path = "file://" + path; var type = file.type; var lastModifiedDate = file.lastModifiedDate; var size = file.size; window.resolveLocalFileSystemURL( path, function(entry) { console.log(1, entry.nativeURL); var reader = new FileReader(); reader.onloadend = function(event) { console.log(3); elements["video"].type = type; elements["video"].src = "data:" + type + ";base64," + event.target.result; console.log(4); }; reader.readAsDataURL(entry); console.log(2); }, function(error) { console.log("0-0", error); } ); } }, function(error) { console.log("0-1", error); }, { limit: 1 } );