ngCordova FileTransfer возвращает http_status: null при загрузке файла с FTP

Я пытаюсь загрузить файл с FTP-сервера с помощью Cordova. У меня установлены 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 в реальном коде

Этот код возвращает следующие предупреждения:

  • какой-то файл.xml
  • файл://хранилище/эмулировать/0/
  • [Объект Object]
  • {"code":2,"source":ftp://URL/somefile.xml","target" :file:///storage/emulated/0/somefile.xml", "http_status": null, "body": null, "exception": null}

Я попытался загрузить файл с веб-сайта, размещенного на ftp (http://website/somefile.xml), который работал просто отлично. Я почти уверен, что делаю что-то не так с заголовком. Я также попытался поместить Login_creds в целевой URL-адрес следующим образом: ftp://username:password@URL/ somefile.xml, это не сработало, но это может быть связано с браузером.


person Tabs    schedule 27.11.2015    source источник
comment
Код ошибки 2 означает неверный исходный URL, см. здесь. Можете ли вы проверить исходный URL?   -  person webdev    schedule 27.11.2015
comment
Привет, Рахул, URL-адрес кажется правильным, при использовании в моем браузере он ссылается на файл xml на ftp-сервере (после ввода учетных данных для входа).   -  person Tabs    schedule 27.11.2015
comment
можешь попробовать - encodeURI(url)   -  person webdev    schedule 27.11.2015
comment
Это приводит к той же ошибке (код: 2), я начинаю верить, что это может быть мой FTP, который все испортил?   -  person Tabs    schedule 27.11.2015
comment
Вы можете отладить проблему с помощью простого запроса JQuery Ajax или напрямую использовать код плагина вместо ngCordova, см. это - github.com/apache/cordova-plugin-file-transfer#example-1 Также убедитесь, что вы установили плагин с помощью этой команды cordova plugin add cordova-plugin-file-transfer   -  person webdev    schedule 27.11.2015


Ответы (1)


ngCordova File Transfer не работает с URL-адресами ftp://, когда я переключился на защищенное паролем решение http, оно сработало.

person Tabs    schedule 04.12.2015