cordova Codrova XMLHttpRequest文件下载

nc1teljy  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(143)

我正在使用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:///”,然后是一长串giberish,我假设一个临时文件存储在某个地方。
问题是:我如何让下载的数据真正存储在 cordova 正在创建的文件中?

  • 谢谢-谢谢
yqlxgs2m

yqlxgs2m1#

想通了...
使用以下cordova函数

saveFile(file, blob);

相关问题