【问题标题】:ngCordova FileTransfer returning http_status: null when downloading file from FTP从 FTP 下载文件时,ngCordova FileTransfer 返回 http_status: null
【发布时间】:2015-11-27 10:13:58
【问题描述】:

我正在尝试使用 Cordova 从 FTP 服务器下载文件。我安装了 ngCordova 和 Filetransfer 插件。以下是我的代码:

angular.module('TestApp', ['ionic', 'TestApp.controllers', 'charts.ng.justgage', 'pascalprecht.translate', 'ngCookies', 'ngCordova'])
var app = angular.module('TestApp.controllers', [])

app.controller('FileDownloadCtrl', function($scope, $timeout, $cordovaFileTransfer) {
$scope.downloadFile = function() {
    var url = "ftp://URL/somefile.xml";
    var filename = url.split("/").pop();
    alert(filename);
    var targetPath = cordova.file.externalRootDirectory + filename;
    var trustHosts = true;

    var options = new Object();
    var headers = { 'Authorization': 'Basic Login_cred' };
    options.headers = headers;

    alert(cordova.file.externalRootDirectory);
    alert(options.headers);
    $cordovaFileTransfer.download(url, targetPath, options, trustHosts)
      .then(function(result) {
          // Success!
          alert(JSON.stringify(result));
      }, function(error) {
          // Error
          alert(JSON.stringify(error));
      }, function (progress) {
          $timeout(function () {
              $scope.downloadProgress = (progress.loaded / progress.total) * 100;
          })
      });
}
});

Angular.module在实际代码中位于不同的JS文件中

此代码返回以下警报:

  • somefile.xml
  • file://storage/emulated/0/
  • [对象对象]
  • {"code":2,"source":ftp://URL/somefile.xml","target":file:///storage/emulated/0/somefile.xml","http_status":null,"body":null ,"异常":null}

我尝试从托管在 ftp (http://website/somefile.xml) 上的网站下载文件,效果很好。我很确定我在标题上做错了什么。我还尝试将 Login_creds 放入目标 url,如下所示:ftp://username:password@URL/somefile.xml,这不起作用,但它可能是特定于浏览器的。

【问题讨论】:

  • 错误代码 2 表示无效的源 URL,see here。你能检查源网址吗?
  • 嘿 Rahul,该 URL 似乎正确,当在我的浏览器中使用时,它链接到 ftp 服务器上的 xml 文件(输入登录凭据后)。
  • 你可以试试 - encodeURI(url)
  • 这最终给了我同样的错误(代码:2),我开始相信可能是我的 FTP 搞砸了?
  • 您可以使用简单的 JQuery Ajax 请求来调试问题或直接使用插件代码而不是 ngCordova,请参阅此 - github.com/apache/cordova-plugin-file-transfer#example-1 还要确保您已使用此命令安装插件 cordova plugin add cordova-plugin-file-transfer跨度>

标签: javascript angularjs cordova ionic-framework ngcordova


【解决方案1】:

ngCordova 文件传输不适用于 ftp:// URL,当我切换到受密码保护的 http 解决方案时,它可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多