将文件从应用程序文件夹复制到 JQM/Phonegap App 的根文件夹?

Posted

技术标签:

【中文标题】将文件从应用程序文件夹复制到 JQM/Phonegap App 的根文件夹?【英文标题】:Copy file from application folder to root folder in JQM/Phonegap App? 【发布时间】:2015-04-06 20:23:37 【问题描述】:

我已经看到了几个不同的示例,说明如何使用 Phonegap File API 将文件从一个目录复制到另一个目录,但是在将文件从我的应用程序文件夹复制到根目录中的现有文件夹时遇到问题。 File API 文档真的很模糊,我一直在应用程序目录中找不到文件。

我可以使用 root.toURL() 访问 sdcard 根文件夹 file:///storage/emulated/0/ 并对其进行读写,但我似乎无法访问我的应用程序文件夹。

Phonegap Build 配置文件中的权限。

<gap:plugin name="org.apache.cordova.file" version="1.3.1" />
<preference name="iosExtraFilesystems" value="library,library-nosync,documents,documents-nosync,cache,bundle,root" />
<preference name="androidExtraFilesystems" value="files,files-external,documents,sdcard,cache,cache-external,root" />

任何帮助或示例都会很棒。

谢谢,

RG

wwwPath = cordova.file.applicationDirectory;
var fp = "temp/myfile.txt";
var fileDestPath = "tempFolder/";

function copyFile()
    var basePath = wwwPath+fp;
    window.resolveLocalFileSystemURL(basePath, function(fileEntry)
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) 
                var copyToPath = fileSystem.root.toURL()+fileDestPath;
                fileEntry.copyTo(copyToPath, 'newFileName.txt', function()
                    alert("file copy success");                        
                    ,fileCopyFail);
            ,fileCopyFail);
    ,fileCopyFail);


function fileCopyFail(error) 
    alert(error);

【问题讨论】:

【参考方案1】:

您可以使用 FileTransfer 将文件下载并存储到不同的位置:

// get base url for index.html
var baseUrl = location.href.replace("/index.html", "");
var fp = "temp/myfile.txt";
var fileDestPath = "tempFolder/";
function copyFile()
    var sourceFilePath = baseUrl + "/" +fp;
   var targetFilePath = fileSystem.root.toURL()+fileDestPath;

var ft = new FileTransfer();
ft.download(
                sourceFilePath,
                targetFilePath,
                function(entry)
                   alert("file copy success")    
                ,
                function(error)
                   alert(error);
                
        );

我最近发现,这不适用于 Windows 81,但我在 Android 和 iOS 上成功测试了它。

【讨论】:

我总是得到错误代码为空,这是否也适用于 mp3 文件? 完美!工作正常,谢谢。 copyTo 函数总是导致我出现代码 1000 错误。【参考方案2】:

看起来您希望在 Android 和 iOS 上都这样做;每个平台上的事情都会有所不同。使用cordova-plugin-file 插件:

o Android 应用程序文件夹 (file:///android_asset/) 的别名是 cordova.file.applicationDirectory

o 您可能已经知道,Android SD 卡根 (file:///storage/emulated/0/) 的别名是 cordova.file.externalRootDirectory

o iOS 应用程序文件夹 (appname.app/) 的别名是 cordova.file.applicationDirectory

显然,iOS 上没有可写入的外部存储,但根据您要对文件执行的操作以及需要访问它的人员,您可以将其写入您的文档 (Documents/ -> cordova.file.documentsDirectory) 或库中(Library/NoCloud/ -> cordove.file.dataDirectory) 文件夹。

【讨论】:

感谢麦克的回复。目前,只是试图让 android 工作。我正在使用 file.applicationDirectory 但无法解析文件 URL。 API 没有给出任何关于如何从 app 文件夹复制到外部根目录的真实示例。你有一些代码的机会吗?我将发布我一直在尝试使用的内容。

以上是关于将文件从应用程序文件夹复制到 JQM/Phonegap App 的根文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

将文件夹从 Android 应用程序复制到本地 Windows 目录

将目录从资产复制到数据文件夹

使用spring boot将zip文件从应用程序资源文件夹复制到目标

iOS,将文件从Inbox文件夹复制到文档路径

将文件复制到/从 iOS 应用程序的数据目录?

Objective-C:将图像从文件复制到设备粘贴板