我正在使用PhoneGap Build构建 iOS 应用程序并使用 weinre进行调试。到目前为止一切顺利。
我正在尝试使用媒体捕获和文件 API 来捕获视频并获取其 Base64 表示形式。我可以打开录像机,拍摄视频,然后返回。问题是我无法使用resolveLocalFileSystemURL 打开给定的路径。每次它返回错误代码 5 时,我似乎找不到一个关于这意味着什么的答案。这是在真实设备上运行的,因此模拟器不是问题。
我已经检查了通过 Google 和 Stack Overflow 找到的所有帖子,我已经阅读了博客文章和其中的评论。这几天我一直在挠头。每个提出答案的人要么使用 Xcode(而不是 Build),要么答案根本不适合我。这是一件非常简单的事情,我不知道问题出在哪里......
下面是我的代码。下面是控制台输出。
elements["media_video"].onclick = function(event) {
navigator.device.capture.captureVideo(
function(files) {
for ( var i = 0 ; i < files.length ; ++i ) {
var file = files[i];
var name = file.name;
var path = file.fullPath;
var type = file.type;
var lastModifiedDate = file.lastModifiedDate;
var size = file.size;
console.log(0, name, path, type, lastModifiedDate, size);
var reader = new FileReader();
reader.onloadend = function(event) {
console.log(3, event.target.result);
};
window.resolveLocalFileSystemURL(
path,
function(entry) {
console.log(1, entry.name);
reader.readAsDataURL(entry);
// send base64 data to server
},
function(error) {
console.log(2, error.code);
}
);
}
},
function(error) {},
{
limit: 1
}
);
};
0 "capturedvideo.MOV" "/private/var/mobile/Applications/[application uuid]/tmp/capture/capturedvideo.MOV" "video/quicktime" 1409866447000 205788
2 5
编辑 1 我没有可以使用 Xcode 的 Mac,这就是我选择基于云的服务的原因。
编辑2 在 iOS v7.1.2 上测试。
最佳答案
将 /private
从初始路径中删除(在旧版 iOS 版本 [<7] 上,您需要删除路径的 /localhost
部分)。
出于某种原因,iOS 认为您不应该能够访问任何以 private
开头的目录,即使完整路径最终落在您的沙箱中。至少可以说,调试令人沮丧,但一旦您知道要查找什么,就可以轻松修复。
编辑于 2014 年 8 月 5 日 6:06:
<小时/>我刚刚注意到您也没有提供 URL 方案 - 您需要将 file://
添加到您的路径中,否则您会收到此特定错误。在调用 resolveLocalFileSystemURL
之前,您的最终路径应如下所示:
file:///var/mobile/Applications/[application uuid]/tmp/capture/capturedvideo.MOV
关于cordova - PhoneGap 解决LocalFileSystemURL 问题(错误 5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25691541/