Phonegap 3.0 FileTransfer下载无效

时间:2013-09-17 12:42:58

标签: javascript ios cordova phonegap-plugins

我正在将这样一个多部分的mime编码图像下载到iOS:

var ft = new FileTransfer();
url = encodeURI(url);

ft.download(url, path, function(fileEntry) {}, function(err) {});

path = "file://localhost/var/mobile/Applications/D702F059-A29F-4FF4-A165-D4A903DEDE7D/Documents/captured/2419747919.jpeg"

并收到以下错误:

body: "Could not create path to save downloaded file: The operation couldn’t be completed. (Cocoa error 513.)"
code: 1 (file not found)
http status: 200

这暗示了一条无效的路径,但我看不出它有什么问题。我得到这样的道路:

path = fs.root.toURL();

其他一切正常,文件可以通过拍照存储在完全相同的路径中。只是不通过FileTransfer下载。

Phonegap 3.0中的任何想法或错误?谢谢!

更新 - 解决方法

FileWriter可以工作,现在甚至可以在iOS和Android上保存blob。示例代码:

var xhr = new XMLHttpRequest();

xhr.open('GET', url, true);
xhr.responseType = 'arraybuffer';

xhr.onload = function() {
    var blob = new Blob([xhr.response], {type: 'image/jpeg'});

    // save via FileWriter
};

xhr.send();

4 个答案:

答案 0 :(得分:3)

我在iOS中发现了这个问题:

路径: path =“file://localhost/var/mobile/Applications/D702F059-A29F-4FF4-A165-D4A903DEDE7D/Documents/captured/2419747919.jpeg”

不起作用,因为它是一个带有“localhost”的URL。

在Cordova的FileEntry中,可以使用“fullPath”和“toURL”来获取字符串......在Android上,它们都可以写入文件。 在iOS上只有fullPath有效... URL无法成功写入文件!

答案 1 :(得分:0)

我在iOS模拟器上工作时遇到了问题,但是一旦我在实际设备上测试它,它就可以了。

答案 2 :(得分:0)

使用nativeURL获取前缀并将文件名附加到它并将其传递给FileTransfer对象。

答案 3 :(得分:0)

您希望使用FileEntry.toURL()获取如下所示的路径:

cdvfile://localhost/persistent/path/to/file

请参阅此处的文档:https://github.com/apache/cordova-plugin-file-transfer