【问题标题】:Cordova 3.6.3 downloading file in AndroidCordova 3.6.3 在 Android 中下载文件
【发布时间】:2014-10-21 07:47:56
【问题描述】:

我正在使用 Cordova 3.6.3,我想在 Android 中下载文件。我添加了有关文件和文件传输的所有权限,还添加了文件和文件传输插件。它给我错误代码:1 .它在内存上创建文件,但它的唯一名称.它是空的。问题出在哪里?

我查找了其他解决方案,但它不起作用。

  var resimURL= "https://farm"+url.farm+".staticflickr.com/"+url.server+"/"+url.id+"_"+url.secret+"_b.jpg";
  //alert("Download");
  alert(resimURL);

  var remoteFile =resimURL;
  var localFileName = remoteFile.substring(remoteFile.lastIndexOf('/')+1);
  window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, 
      function(fileSystem) {
          fileSystem.root.getFile(localFileName, {create: true, exclusive: false}, 
          function(fileEntry) {
              var localPath = fileEntry.fullPath;
              alert(localPath);
              if (device.platform === "Android" && localPath.indexOf("file://") === 0) {
                  localPath =fileSystem.root.toUrl()+localPath.substring(7);
                  alert(localPath);
              }
              var ft = new FileTransfer();
              ft.download(remoteFile, localPath,
                  function(entry) {
                      alert("Download Complete");
                  },
              fail);
          },
      fail);
      },
  fail);
  function fail(error) {
      alert("error"+error.code);
  }

【问题讨论】:

    标签: android file cordova


    【解决方案1】:

    我认为您应该在将 uri 传递给下载方法之前对其进行编码:

    var resimURL = encodeURI("your uri");

    这在文档中描述如下:

    source:用于下载文件的服务器的 URL,由 encodeURI() 编码。

    希望这会有所帮助。

    参考:https://github.com/apache/cordova-plugin-file-transfer/blob/master/doc/index.md

    【讨论】:

    • @NazırDogan 嗯..错误代码 1 是 FILE_NOT_FOUND_ERR。当您在浏览器上尝试时,您的下载 uri 是否正确下载了文件?
    • 是的。它正在下载。例如我的应用程序中的这个链接farm4.staticflickr.com/3950/14951861574_27472abe70_b.jpg
    • @NazırDogan 是下载方法中的错误代码 1?我只是想知道它是否来自正确的方法,因为您对所有方法都使用相同的失败函数。此外,下载方法还有一个可选参数,称为 trustAllHost。将其设置为 true 将接受所有安全证书:download(source,target, SC, FC, trustAllHosts)
    • 另外,以防万一,你能把权限部分也发一下吗?
    • 嗨,SLee,我改变了一些东西。它现在可以工作了。我回答了这个问题,并在所有文件传输权限之前添加了。无论如何现在它工作了,谢谢 :)
    【解决方案2】:

    我做到了,它现在工作..

    var ft = new FileTransfer();
    ft.download(remoteFile,
                "/sdcard/Pictures/"+url.id+"_"+url.secret+"_b.jpg",
                function(entry) {
                    console.log("download complete: " + entry.toURL());
                }, fail);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多