gpt4 book ai didi

javascript - 使用 Cordova Hybrid 应用程序将文件复制到路径

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:00:06 26 4
gpt4 key购买 nike

上下文:我正在使用 Cordova 6 和 SAPUI5 框架开发混合应用程序(目前只需要担心 Android)。

我想要的:快速将文件复制/移动到路径。也许得到 FileEntry来自 FileUploader 的 File/Blob 对象在 sapui5 上。

输入:FileUploader

输出:文件对象因此,当我通过执行以下操作选择文件时,我得到了该文件:

sap.ui.getCore().byId('file-uploader-id').oFileUpload.files[0];

然后我必须将它复制到另一个位置:“cordova.file .externalCacheDirectory”。但是 FileUploader 不提供所选项目的完整路径值 ( for security reasons )。

我尝试过的:

        var sPath = URL.createObjectURL(oFile);
var pCopyFrom = new Promise((resolve, reject) => {
window.resolveLocalFileSystemURL(sPath, resolve, reject);
});

var pCopyTo = new Promise((resolve, reject) => {
var sExternalCachePath = cordova.file.externalCacheDirectory;
window.resolveLocalFileSystemURL(sMediaPath, resolve, reject);
});

Promise.all([pCopyFrom, pCopyTo]).then(aValues => {
aValues[0].moveTo(aValues[1], aValues[0].name, cbSuccess, cbError);
});

结果:

解决方案似乎不起作用,因为生成的路径不可用(错误代码 5),该路径对于这样使用是无效的。

可能的解决方案:

  • 通过其他方式提取文件对象的路径。
  • 使用另一个可以提供此路径的输入(直到现在我还没有找到)。
  • 在手机上使用文件名或大小递归查找文件路径。

目前的解决方案是什么(但是真的很慢):

FileWritter写入文件.如果我有路径并且我将上面的代码用于视频(持续时间为 5 秒),它花费不到 1 秒(感谢 FileEntry)复制/移动它(使用相机使用 cordova-plugin-media-capture 捕获或视频捕获,给出文件的路径),同时使用 FileWritter它花费大约 10 秒 编写它的方法。

感谢阅读。我会上传任何新的。

最佳答案

最终的解决方案是我在题中说的第二个方案,改变输入法:

而不是使用 FileUploader作为输入,使用名为 File Selector 的插件.

您可以获取文件名、URI、Mime 类型和文件扩展名

所以现在我可以使用 FileEntry 更快地移动/复制文件.

无论如何,如果我发现与此主题相关的内容,我会更新此答案。

谢谢。

关于javascript - 使用 Cordova Hybrid 应用程序将文件复制到路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52668616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com