【问题标题】:PhoneGap Build: cordova.file-transfer download always fails with code 3 on AndroidPhoneGap Build:cordova.file-transfer 下载在 Android 上总是失败,代码为 3
【发布时间】:2014-12-23 22:22:12
【问题描述】:

令人恼火.. 几天前,我无法让 Cordova 文件传输插件与 PhoneGap 3.6.3 一起使用。现在看来,在我重写了 index.js 之后,“未定义”错误的问题已经解决了。这是老问题:PhoneGap Build: Plugins not working (getting "undefined" errors) on Android

现在我遇到了一个新问题:Android 上的下载总是失败并显示以下消息:

文件传输错误

正文:空

代码:3

例外:空

http_status: 401

来源:“http://www.hs-bremerhaven.de/fileadmin/images/logo.png

目标:“file:///data/data/de.testapp1374839/files/logo.png”

原型:对象

我已经尝试将这些功能标签添加到 config.xml 文件中:

<feature name="http://api.phonegap.com/1.0/file"/>
<feature name="http://api.phonegap.com/1.0/network"/>

我提供了一个通配符来访问外部资源。

<access origin="*"/>

这是我更新后的 index.js:

var DR = {
    initialize: function(){
        this.bindEvents();
    },
bindEvents: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
    document.getElementById('download').addEventListener('click', this.downloadFile, false);
},
onDeviceReady: function(){
},

downloadFile: function(){
    console.log("Downloading...");
    var $status = document.querySelector("#fileStatus");;
    var assetURL = encodeURI("http://www.hs-bremerhaven.de/fileadmin/images/logo.png");
    var fileName = "logo.png";
    var DEV_PATH = cordova.file.dataDirectory;
    var fullPath = DEV_PATH + fileName;
    console.log("DEV_PATH " + DEV_PATH);
    $status.innerHTML = "Checking for file";

     window.resolveLocalFileSystemURL(fullPath, onFilePresent, downloadAsset);

    function onFilePresent(){
        console.log("File already there");
    }
    function downloadAsset() {
        var fileTransfer = new FileTransfer();
        console.log("Downloading: " + assetURL + " to " + fullPath);

        fileTransfer.download(assetURL, fullPath, 
            function(entry) {
                console.log("Success!");
                onFilePresent();
            }, 
            function(err) {
                console.log("Error");
                $status.innerHTML = "Fehler.";
                console.dir(err);
            });
      } 
   },
  checkFile: function(){
       //todo
  }
};

任何帮助将不胜感激。

【问题讨论】:

  • 401错误是未经授权的,所以,也许你的服务器不允许下载文件
  • @jcesarmobile:我不认为是这样,因为你可以直接用浏览器下载它。
  • 这个问题有解决方案吗?我有完全相同的问题。

标签: cordova phonegap-plugins phonegap-build cordova-plugins


【解决方案1】:

我之前遇到过这个问题,当时我没有像你一样为 download 方法添加第 5 个参数。不过,我没有检查错误消息,然后让它工作,毕竟删除了整个文件传输,所以无法验证。

无论如何,这个参数被称为trustAllHosts,它默认为false。所以将 true 作为第五个参数传递给我。请试一试,如果这不起作用,让我们弄清楚更多。

另外,由于您在这个问题上参考了您提出的最后一个问题,请accept 在那里回答,如果它确实帮助您解决了您在标题中声称的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-09
    • 2016-02-09
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多