PhoneGap resolveLocalFileSystemURL问题(错误5)

时间:2014-09-05 18:03:28

标签: cordova filesystems

我使用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&#34; capturedvideo.MOV&#34; &#34; /私有的/ var /移动/应用/ [应用   UUID] /tmp/capture/capturedvideo.MOV" &#34;视频/ QuickTime的&#34; 1409866447000   205788

     

2 5

修改1 我没有使用Xcode的Mac,这就是我选择基于云的服务的原因。

编辑2 在iOS v7.1.2上进行测试。

1 个答案:

答案 0 :(得分:10)

从初始路径中取消/private(在较旧的iOS版本[&lt; 7]上,您需要取消路径的/localhost部分)。

出于某种原因,iOS认为您无法访问以private开头的任何目录,即使完整路径最终落在您的沙箱中也是如此。令人沮丧的是调试,至少可以说,但一旦你知道要寻找什么,这是一个简单的修复。


编辑2014年8月5日6:06:


我刚刚注意到您也没有提供URL方案 - 您需要在路径前加file://,否则会出现此特定错误。在致电resolveLocalFileSystemURL之前,您的最终路径应如下所示:

file:///var/mobile/Applications/[application uuid]/tmp/capture/capturedvideo.MOV