Cordova – 在下载文件夹中下载文件

我已经阅读了很多帖子,但我没有得到最终答案.
从这个 link的代码开始,我将我的文件下载到应用程序中.无论如何,我想看到它进入“下载”文件夹.
我正在使用Android,但显然我也想要一个适用于iOS的解决方案.

解决方法

编辑

如果您已经知道文件的路径,则可以移动它:

var storageLocation = "";
console.log(device.platform);
switch (device.platform) {

    case "Android":
        storageLocation = 'file:///storage/emulated/0/';
        break;
    case "iOS":
        storageLocation = cordova.file.documentsDirectory;
        break;

}


var fileUri = "file:///data/user/0/com.arsdigitalia.myapp/files/files/MyApp‌​/test.pdf"

function moveFile(fileUri) {
    window.resolveLocalFileSystemURL(
          fileUri,function(fileEntry){

                var parentEntry = storageLocation + "Download";
               
                // move the file to a new directory and rename it
               fileEntry.moveTo(parentEntry,"newFile.pdf",success,fail);
                       
          },errorCallback);
}

原版的

这是我用来完成此任务的示例代码.它在Android上效果最好,由于应用程序沙盒,iOS有点不同,因此您需要自己处理检索文件.我还使用Cordova设备插件来确定应用程序运行的设备,然后我可以更改存储路径以适应:

var storageLocation = "";
console.log(device.platform);
switch (device.platform) {

    case "Android":
        storageLocation = 'file:///storage/emulated/0/';
        break;
    case "iOS":
        storageLocation = cordova.file.documentsDirectory;
        break;

}

window.resolveLocalFileSystemURL(storageLocation,function (fileSystem) {

        fileSystem.getDirectory('Download',{
                create: true,exclusive: false
            },function (directory) {

                //You need to put the name you would like to use for the file here.
                directory.getFile("YOUR_FILE_NAME",{
                        create: true,exclusive: false
                    },function (fileEntry) {


                        fileEntry.createWriter(function (writer) {
                            writer.onwriteend = function () {
                                console.log("File written to downloads")
                            };

                            writer.seek(0);
                            writer.write(YOUR_FILE_HERE); //You need to put the file,blob or base64 representation here.

                        },errorCallback);
                    },errorCallback);
            },errorCallback);
    },errorCallback);

var errorCallback = function(e) {
    
    console.log("Error: " + e)
    
}

然后从您可以使用的目录中检索文件列表:

window.resolveLocalFileSystemURL(storageLocation,function (fileSystem) {
    
        fileSystem.getDirectory('Download',function (directory) {

                var reader = directory.createReader();
                reader.readEntries(function (files) {

                    if (files.length == 0) {

                        console.log("No files found in downloads folder.")

                    } else {

                        $.each(files,function (i,v) {

                            console.log("File Name: " + files[i].name;)

                        });

                    }

                },getFilesFail);
            },getFilesFail);
    },getFilesFail);

var getFilesFail = function(e) {
    
    console.log("Error: " + e);
    
}

要安装设备插件,请使用以下命令:

cordova plugin add cordova-plugin-device

文档在这里:

https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-device/

相关文章

公司前端界面用的是vue,我要嵌入到Android中生成App第一步:...
Q:我用cordova开发项目,想在app内跳转外部链接,安装了cord...
我正在使用https://github.com/arnesson/cordova-plugin-fir...
一、Cordova的基础点在混合式应用中,我们通过现有的Cordova...
cordova自定义插件注意:存放自定义cordova插件目录不能有空...
一、问题VueAPP中有一个文件下载功能,用了各种方法来实现下...