Cordova - 下载下载文件夹中的文件

2023-11-25

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


EDIT

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

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);
}

Original

这是我用来完成此任务的一段示例代码。它在 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', {
                create: true,
                exclusive: false
            },
            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/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cordova - 下载下载文件夹中的文件 的相关文章

随机推荐

  • 为什么使用数组作为键来访问对象中的元素有效?

    你对此有何看法 var x a 1 gt a 1 var y Object keys x gt a x y gt 1 if y a x y 和做一样x a right x a gt 1 x a gt 1 x a gt 1 有人可以解释这里发
  • scandir() 按修改日期排序

    我正在努力使scandir 函数超出了其书面限制 我需要的不仅仅是它当前支持的 alpha 排序 我需要排序scandir 结果按修改日期排序 我尝试了在这里找到的一些解决方案以及来自不同网站的其他一些解决方案 但没有一个对我有用 所以我认
  • 具有常用选项的 Python 多命令 CLI

    我正在为我的 Python 应用程序添加 CLI CLI 应允许一次运行多个命令 命令应该有公共选项和个人选项 Example python mycliapp py common option1 value1 common option2
  • 如何/为什么将图像数据存储为 char - OpenCV

    我有点困惑 我刚刚开始使用 OpenCV 它的图像数据由字符指针指向 考虑到实际数据本身可以是任意数量的数据类型 例如 我无法完全弄清楚它是如何工作的 uint 浮点数 双精度 据我所知 指针必须与其所代表的指针具有相同的类型 可能值得注意
  • 如何截取屏幕的一部分并将其保存为 BMP? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在c 中使用win32制作屏幕截图 我目前正在尝试创建一个将屏幕的一部分保存到 bmp 的应用程序 我已经发现BitBlt但我真的不知道该怎么办 我尝试寻找一些答案 但仍然没有找到使用 C 的澄清
  • Safari/Chrome 中的 MouseOver MouseOut 问题

    这是一个奇怪的现象 我很惊讶我以前从未注意到它 它的工作原理是这样的 如果你的鼠标是静止的 并且 div 以编程方式在你的鼠标下方移动 mouseoverChrome Safari 中不会触发事件 同样适用mouseout 当然 如果 di
  • “MySQL”未被识别为内部命令(Apache Cordova for Visual Studio)

    当我使用 Cordova Apache Tools 在 Visual Studio 中构建空白应用程序时 出现以下错误 MySQL 未被识别为内部命令 Build started Project FirstAppInCordova Conf
  • 在 React 中渲染 array.map()

    我遇到一个问题 我试图使用数据数组来渲染 ul 元素 在下面的代码中 控制台日志工作正常 但列表项没有出现 var Main React createClass getInitialState function return data da
  • 在 Angular 中滚动(单击)到特定 div

    我有一个 contentdiv 和一个按钮组件 当我单击按钮时 我想滚动到 content div 的顶部 HTML div Loren ipsum div div top div topscroll component ts export
  • 在 Qt 中渲染 OpenGL 场景并将其流式传输到 HTML5 界面

    我想知道是否可以在 Qt 中渲染 OpenGL 场景并将其实时传输到 HTML5 界面 我的意思是场景是当场生成的 我一直在尝试查找有关此内容以及如何操作的信息 但没有成功 如果存在 是否有任何现有机制来压缩图像并优化带宽使用 我正在考虑使
  • 使用 IComparer 进行随机播放

    首先 我确实了解费舍尔 耶茨洗牌法 但为了论证起见 我想允许用户从下拉列表中选择排序选项 该列表将包括 随机 选项 根据他们的选择结果 我只想用 IComparer 实例替换我的排序 IComparer 会是什么样子 谷歌带来了大量有缺陷的
  • 您将如何将实体框架 (1.0) 与 ASP.Net 成员资格结合使用?

    我正在尝试为使用 ASP Net 成员资格进行用户身份验证的应用程序设计一个实体模型 在我创建的大多数数据库模式中 记录通常最终通过 aspnet users 表上的 UserId 字段与用户相关 这在过去对我来说效果很好 但现在我使用 E
  • 循环遍历值或注册表项.._winreg Python

    我将如何循环通过all the values使用 Python 模块 winreg 的 Windows 注册表项 我有可以执行我想要的操作的代码 但它是针对指定注册表项的子项的 这是代码 from winreg import t OpenK
  • 是否可以在运行时设置 Windows 程序的语言或区域设置?

    我们有一些现有的软件 C Windows 应用程序 它们的资源已被翻译成多种语言供不同的客户使用 该应用程序从 Windows 区域设置中获取区域设置并以适当的语言运行 根据最近的订单 我们将资源翻译成德语 但我们刚刚发现客户正在安装英语版
  • MSMQ 创建错误:工作组安装计算机不支持该操作/用户的内部消息队列证书不存在

    这让我有点抓狂 所以如果有人能提供帮助 我将非常感激 我试图将消息从域内的服务器发送到公共队列到域控制器 但出现错误 工作组安装计算机不支持该操作 我已在域控制器上设置了 MSMQ 并在公共队列文件夹中创建了一个消息队列 我知道以前也有人问
  • 即使超类实现了相同的接口,在子类中实现接口有什么好处吗?

    当我看到声明时ArrayList class ArrayList
  • 无法从释放的脚本执行代码 - IE6 IE7 IE8 IE9

    我今天在 IE6 中遇到了这个问题 但在所有最新版本的 IE 上都可以重现 我注意到很多人遇到这个问题 但我还没有看到一个非常实用的方法来解决这个问题 关于 HTML 文档头部中脚本标签和元标签的顺序 似乎还有一些其他解决方案 我还没有确认
  • 在Python中的两层循环中使用相同的变量时发生了什么?

    我测试以下代码 for i in range 3 for i in range 3 5 print inner i d i print outer i d i 输出是 inner i 3 inner i 4 outer i 4 inner
  • Typescript 中有“Class”类型吗?那么“任何”包括它吗?

    在Java中 你可以给出一个类到方法使用类型 Class 作为参数 我在打字稿文档中没有找到类似的内容 是否可以将类交给方法 如果是这样 类型 any 是否包括此类类类型 背景 我在使用 Webstorm 时遇到问题 告诉我无法将课程移交给
  • Cordova - 下载下载文件夹中的文件

    我读了很多帖子 但没有得到最终答案 从这里的代码开始link 我将文件下载到应用程序中 无论如何 我想在 下载 文件夹中看到它 我使用的是 Android 但显然我想要一个也适用于 iOS 的解决方案 EDIT 如果您已经知道文件的路径 则