cordova - PhoneGap 解决LocalFileSystemURL 问题(错误 5)

标签 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 "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/

相关文章:

angularjs - 无法在 ionic 中使用 ng-model 从模态检索值

ios - 如何让 Xcode Iphone Simulator 将 SQLite 数据库保存到本地文件?

javascript - 数字变量始终未定义

iterator - D 的类似 Boost.Filesystem 的库

linux - inotify - 最好的方法是什么?

c++ - 检查文件是由进程创建的还是用户使用 C++ 创建的

php - 具有文件系统功能的测试对象

linux - linux下创建文件夹的地方?

javascript - 找到我在 android 上的 phonegap 中遇到的 javascript 错误

android - Cordova 中的实时数据使用监控