我正在使用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正在创建的文件中?
谢谢。
答案 0 :(得分:0)
弄清楚了...
使用以下科尔多瓦功能
saveFile(file, blob);