2016-08-26 3 views
0

Я использую cordova-file-transfer-plugin, и я могу скачать и воспроизвести файл MP3 отлично на Android, но в iOS файл не существует.Как получить доступ к загруженному файлу в локальной файловой системе iOS с помощью Cordova?

Я поменял каталог на documentsDirectory, но когда я его вызываю в своем браузере, он не работает. Я использую пример кода, показанный в ссылке.

Я также посмотрел this question, но не повезло.

var targetPath; 
        if (ionic.Platform.isIOS()) 
        { 
         targetPath = cordova.file.documentsDirectory + data.value.split('/').pop(); 
        } else 
        { 
         targetPath = cordova.file.dataDirectory + data.value.split('/').pop(); 
        } 
        $cordovaFileTransfer.download('http://admin.lalelaknowledge.com/FileUpload/Upload/0a5eabcc-231e-4831-b72f-c8980b78615c.mp3', targetPath, {}, true) 
          .then(function (result) 
          { 
           console.log(result); 

          }, function (err) { 

           console.log(err); 
          }, function (progress) { 
           $timeout(function() { 
            console.log((progress.loaded/progress.total) * 100); 
           }); 
          }); 
+0

Не могли бы вы поделиться некоторыми из вашего кода? – Dexter

+0

просто добавил. FYi отлично работает в симуляторе IOS, но не на устройстве. –

+0

Привет @duovili .. Могу ли я спросить, нет ли у вашей функции загрузки проблем? Mine работает, если я только перезапущу приложение. –

ответ

1

Это ваше решение. Чтобы открыть этот файл, вам нужен плагин cordova cordovaFileOpener2. Надеюсь, вы уже установили его. Позвольте мне знать, что это работает.

$scope.initializeDownload = function() { 
 
    var fileName = '0a5eabcc-231e-4831-b72f-c8980b78615c.mp3' 
 
    var storagePath = cordova.file.dataDirectory + fileName 
 
    window.resolveLocalFileSystemURL(storagePath, function success(fileEntry) { 
 
    fileEntry.file(function(file) { 
 
     $scope.downloadAttachment(file.localURL, options, trustHosts) 
 
    }) 
 
    }, function(err) { 
 
    window.resolveLocalFileSystemURL(cordova.file.documentsDirectory, 
 
     function success(dirEntry) { 
 
     dirEntry.getFile(fileName.replace(/^.*[\\\/]/, ''), { 
 
      create: true, 
 
      exclusive: false 
 
      }, 
 
      function(fileEntry) { 
 
      fileEntry.file(function(file) { 
 
       $scope.downloadAttachment(file.localURL, options, trustHosts) 
 
      }); 
 
      }, function(error) { 
 
      console.log(error) 
 
      }); 
 
     }, function(error) { 
 
     console.log(error) 
 
     }); 
 
    }); 
 
} 
 

 

 
$scope.downloadAttachment = function(fileURL, trustHosts, options) { 
 
    var ft = new FileTransfer(); 
 
    ft.onprogress = function(progress) { 
 
    // Here you can get your download status 
 
    //var downloadStatus = (progress.loaded/parseInt(fileSize)) * 100; 
 
    //console.log(downloadStatus) 
 
    }; 
 
    ft.download('http://admin.lalelaknowledge.com/FileUpload/Upload/0a5eabcc-231e-4831-b72f-c8980b78615c.mp3', 
 
    fileURL, 
 
    function(result) { 
 
//Second argument is the file Mime type 
 
     $cordovaFileOpener2.open(result.nativeURL, 'audio/mpeg').then(function(result) { 
 
     console.log("Open success") 
 
     }, function(err) { 
 
     console.log("Open Error") 
 
     }); 
 
    }, 
 
    function(error) { 
 
     ft.abort(); 
 
     console.log(error.exception || error.body) 
 
    }, 
 
    trustHosts, 
 
    options 
 
); 
 
}

+0

но разве этот плагин не открывает его в родном mp3-плеере? Я хочу открыть его в приложении, используя HTML-плеер в приложении. –

+0

Какой опыт вы получаете прямо сейчас? Независимо от того, что я узнал от кордовы, он предоставит пользователю возможность выбирать приложение для открытия любого файла. –

+0

На Android-устройстве и симуляторе IOS он вызывает файл без проблем (с абсолютным URL-адресом файла) и воспроизводит его, но на устройстве IOS в консоли он просто говорит «ошибка при получении ресурса», и я знаю, что ресурс есть. –

Смежные вопросы