1

我正在将多部分 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

4 回答 4

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 没有成功写入文件!

于 2013-11-27T23:06:53.497 回答
0

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

于 2014-07-15T16:23:01.293 回答
0

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

于 2015-05-15T15:42:58.600 回答
0

您将希望使用它FileEntry.toURL()来获得如下所示的路径:

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

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

于 2015-07-10T13:34:00.613 回答