Я работаю с Cordova и пытаюсь загрузить файл с XMLHttpRequest
Я пытаюсь использовать этот пример
https://cordova.apache.org/blog/2017/10/18/from-filetransfer-to-xhr2.html
Вот мой код
var fileName = "test.mp3";
var dlUrl = "http://myserver.com/down.php?id=123";
var fileSystem = cordova.file.externalApplicationStorageDirectory + "myfolder/downloads";
window.resolveLocalFileSystemURL(fileSystem, function (dir) {
dir.getFile(fileName, {create: true}, function (file) {
var oReq = new XMLHttpRequest();
oReq.addEventListener("progress", updateProgress);
oReq.addEventListener("load", transferComplete);
oReq.addEventListener("error", transferFailed);
oReq.addEventListener("abort", transferCanceled);
// Define how you want the XHR data to come back
oReq.responseType = "blob";
// I have added my domain to Content-Security-Policy <meta>
oReq.open("GET", dlUrl, true);
oReq.onload = function (oEvent) {
var blob = oReq.response; // Note: not oReq.responseText
if (blob) {
var url = window.URL.createObjectURL(blob);
alert( url );
} else {
alert('we didnt get an XHR response!');
};
oReq.send(null);
Если я получу доступ к своему скрипту загрузки php через браузер, он без проблем загрузит мой файл .mp3.Поэтому я предполагаю, что мой скрипт файлового сервера работает хорошо.
Когда я запускаю скрипт приложения, Cordova создаст пустой файл там, где я хочу.
Запрос на загрузку XMLHttpRequest выполняется без ошибок, но фактически не сохраняет извлеченные данные в файле, который создает Cordova.Файл просто пуст.
Когда я повторяю URL-адрес большого двоичного объекта, он находится не в папке, на которую я нацеливался с Cordova, а просто в «file: ///», а затем в длинной цепочке, я предполагаю, что временный файл сохраненгде-то.
Вопрос заключается в следующем: как получить загруженные данные, которые будут фактически сохранены в файле, создаваемом Cordova?
Спасибо.