无法使用org.apache.cordova.file-transfer下载文件

时间:2014-11-26 05:31:18

标签: cordova plugins file-transfer

我正在为android构建一个phonegap应用程序。我想使用文件和文件传输等插件下载文件。 我使用 -

添加了两个插件

cordova插件添加org.apache.cordova.file-transfer

它也成功添加了插件。然后我添加了READ_EXTERNAL_STORAGE& WRITE_EXTERNAL_STORAGE for android。我也更新了config.xml文件。但即使这样,当我执行代码时,我也会收到以下错误 -

未捕获的参考错误:未定义LocalFileSystem。

我的代码是 -

function fileManager() {};

fileManager.download = function (source, callback) {
    var fileName = fileManager.fileName(source);

    window.requestFileSystem(LocalFileSystem.PERSISTENT,0, 
        function onFileSystemSuccess(fileSystem) {
            alert('success');
            fileSystem.root.getFile(
                fileName, {create: true, exclusive: false}, 
                function gotFileEntry(fileEntry) {
                    //var sPath = fileEntry.fullPath.replace(fileName,"");
                    var sPath = 'cdvfile://localhost/persistent/'
                    var fileTransfer = new FileTransfer();
                  fileTransfer.onprogress = function(progressEvent) {
                  if (progressEvent.lengthComputable) {
                  loadingStatus.setPercentage(progressEvent.loaded / progressEvent.total);
                  } else {
                  loadingStatus.increment();
                 }
               };
                    fileEntry.remove();

                    fileTransfer.download (
                        encodeURI(source),
                        sPath + fileName,
                        function(theFile) {
                            console.log("download complete: " + theFile.toURI());
                            callback(theFile.toURI());
                        },
                        function (error) {
                             alert('error');
                            console.log("download error source " + error.source);
                            console.log("download error target " + error.target);
                            console.log("upload error code: " + error.code);
                        }
                    );
                }, function(e){
                     alert('error');
                });
        }, function (e) {
             alert('error');
        });
    };

fileManager.fileName = function(source) {
    var paths = source.split('/');
    return paths[paths.length - 1];
}

我尝试了许多可能的解决方案,但没有一个能达到我的目的。请帮忙。                       谢谢和问候。

1 个答案:

答案 0 :(得分:0)

你能试试这个直截了当的解决方案吗?

var ft = new FileTransfer();
ft.download(
    "http://www.something.com/test.zip", // what u download
    "/sdcard/test.zip",// this is the filename as well complete url
    function(entry) {
        alert("success"); alert(JSON.stringify(entry));

    }, 
    function(err) {
        alert(err); alert(JSON.stringify(err));
    }
);

您也可以尝试参考此链接: http://simonmacdonald.blogspot.co.uk/2012/04/sorry-for-being-gone-so-long-vacation.html