Изтеглянето на Phonegap 3.0 FileTransfer не работи

Изтеглям многочастно 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. Примерен код:

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();

person Benjamin E.    schedule 17.09.2013    source източник
comment
Бихте ли предоставили някакъв код как сте решили този проблем? Това грешка в Кордова ли е? Имаме същия проблем.   -  person christianmenkens    schedule 20.11.2013
comment
Не знам дали FileTransfer работи сега, не съм опитвал от известно време. Вижте примерния код по-горе. Трябва да знаете mimeType, за да създадете правилен петно, но това може да е просто текст, предполагам. Ако имате нужда от справка за FileSystemAPI, потърсете Filer.js от Ерик Биделман.   -  person Benjamin E.    schedule 20.11.2013


Отговори (4)


Намерих проблема в iOS:

Пътят: път = "file://localhost/var/mobile/Applications/D702F059-A29F-4FF4-A165-D4A903DEDE7D/Documents/captured/2419747919.jpeg"

не работи, защото това е URL адрес с „localhost“ в него.

От FileEntry в Cordova човек може да получи низ, използвайки "fullPath" и "toURL" ... на Android те работят и за писане на файл. В iOS работи само fullPath ... URL адресът не записва успешно файл!

person christianmenkens    schedule 27.11.2013
comment
Здравей @christianmenkens, знам какво направи при връщането на успешното обратно извикване, за да го покажеш в src на изображението? имам успех, но връща var/mobile ... - person BizApps; 12.03.2014
comment
път с file://var/mobile/Applications/D702F059-A29F-4FF4-A165-D4A903DEDE7D/Documents/captured/2419747919.jpeg би трябвало да е подходящ за работа на iOS. Ние просто използваме този път, за да го поставим във FileUpload. - person christianmenkens; 21.03.2014
comment
@christianmenkens сигурен ли си, че има само две наклонени черти след файла: ? Получавам три, когато поискам FS ... (и какаова грешка 512.. работи добре на Android) - person trainoasis; 08.07.2014
comment
Използвам dirEntry.nativeURL+filename като цел за FileTransfer.download на iOS и Android и работи като чар! - person 695Multimedia; 14.11.2014

Имах проблеми с това, докато работех върху iOS Simulator, но след като го тествах на действителното устройство, той проработи.

person brickpop    schedule 15.07.2014

използвайте nativeURL, за да получите префикса и да добавите името на вашия файл към него и да го предадете на обекта FileTransfer, той ще работи.

person Seraj Ahmad    schedule 15.05.2015

Ще искате да използвате FileEntry.toURL(), за да получите път, който изглежда така:

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

Вижте документацията тук: https://github.com/apache/cordova-plugin-file-transfer

person wmarbut    schedule 10.07.2015