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

时间:2015-04-06 20:23:37

标签: javascript android cordova phonegap-build

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

我可以使用root.toURL()访问sdcard根文件夹文件:/// 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);
}

2 个答案:

答案 0 :(得分:5)

您可以使用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上成功测试过它。

答案 1 :(得分: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/ - &gt; {{1 }}或库(cordova.file.documentsDirectory - &gt; Library/NoCloud/)文件夹。