Cordova XMLHttpRequest 文件下载
Posted
技术标签:
【中文标题】Cordova XMLHttpRequest 文件下载【英文标题】:Codrova XMLHttpRequest File Download 【发布时间】:2018-12-08 02:08:33 【问题描述】:我正在使用 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 创建的文件中。该文件只是空的。
当我回显 blob 的 URL 时,它不在我使用 Cordova 定位的文件夹中,而只是“file:///”,然后是一长串乱码,我假设临时文件存储在某个地方。
问题是:如何将下载的数据实际存储在 Cordova 正在创建的文件中?
谢谢。
【问题讨论】:
【参考方案1】:想通了……
使用以下科尔多瓦函数
saveFile(file, blob);
【讨论】:
以上是关于Cordova XMLHttpRequest 文件下载的主要内容,如果未能解决你的问题,请参考以下文章
Cordova Async XMLHttpRequest().open 在 Android 中不起作用