我正在使用 PhoneGap Build 构建 iOS v7.1+ 应用程序并使用weinre http://people.apache.org/~pmuellr/weinre-docs/latest/进行调试。我正在使用媒体捕获插件和文件 API 来捕获视频,试图获取其 Base64 表示形式。我可以打开录像机、拍摄视频并返回文件路径。然后我用resolveLocalFileSystemURL()
获取一个文件对象readAsDataURL()
需要。问题是FileReader
从来没有打电话给onloadend
打回来。
我一整天都在闲逛。推杆console.log()
我能想到的无处不在。我检查了一下以确保 iOS 版本支持 http://www.caniuse.com/#feat=filereader。每个变量都是我所期望的,但回调根本没有被调用。我还尝试设置所有其他回调,但它们都没有被调用。我尝试过更换readAsDataURL()
with readAsText()
但我还是得到了布基斯。我尝试等待最多五分钟,因为我认为异步调用可能需要一点时间,但仍然没有任何结果。
下面是我的代码。下面是控制台输出。
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“文件:///var/mobile/Applications/AB239984-FB9F-43C0-B699-3596AC8A43A8/tmp/capture/capturedvideo.MOV”
2
稍微重新组织一下你的代码。放在reader
初始化和onloadend
里面的回调resolveLocalFileSystemURL
成功回调。
像这样的东西:
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
}
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)