Phonegap / Cordova无法下载到Android的子文件夹

时间:2012-11-19 21:07:25

标签: android cordova

我正在使用Phonegap 2.2.0在Eclipse中构建一个Android应用程序

这适用于iOS:

var uri = encodeURI(value);
var fileName = uri.substring(uri.lastIndexOf('/')+1);

 window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
        fileSystem.root.getDirectory("dir/subdir", {create: true, exclusive: false}, function(dirEntry){
            dirEntry.getFile(fileName, {create: true, exclusive: false}, function(fileEntry) {
                var localPath = fileEntry.fullPath;
                var fileTransfer = new FileTransfer();
                fileTransfer.download(
                    uri,
                    localPath,
                    function(entry) {
                        console.log("xfg download complete: " + entry.fullPath);
                    },
                    function(error) {
                        console.log("xfg download error source " + error.source);
                        console.log("xfg download error target " + error.target);
                        console.log("xfg upload error code" + error.code);
                    }
                );

            });
        });
    });

在上面代码的第4行,我在“dir / subdir”获取目录,下载工作正常。但是,在Android中,fileSystem获取子目录,但下载失败并显示“找不到文件”。

如果我用“dir”替换“dir / subdir”就行了。

对此有任何解决方案或巧妙的解决方法吗?

2 个答案:

答案 0 :(得分:2)

您可以通过探测navigator对象的userAgent属性来识别设备类型:

if((navigator.userAgent.match(/Android/i)) == "Android")

如果是Android设备,请使用dir代替dir/subdir

请参阅:Detect device type in phonegap

答案 1 :(得分:1)

除非目录已存在,否则无法指定子目录。因此,请创建getDirectory('dir'...,然后getDirectory('subdir'...

https://developer.mozilla.org/en-US/docs/DOM/File_API/File_System_API/DirectoryEntry

  

从DirectoryEntry到的绝对路径或相对路径   要查找或创建的目录。尝试这是一个错误   创建一个直接父级尚不存在的文件。