Codrova XMLHttpRequest文件下载

时间:2018-12-08 02:08:33

标签: cordova xmlhttprequest

我正在使用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 个答案:

答案 0 :(得分:0)

弄清楚了...

使用以下科尔多瓦功能

saveFile(file, blob);