Проблемы со ссылкой на скачивание в PhoneGap Android - PullRequest
1 голос
/ 02 марта 2012

Я пытаюсь загрузить динамически сгенерированный файл на сервер.Попробуем простое приложение с помощью phonegapbuild 1.4.1.

Сначала я попробовал прямую ссылку на страницу сервера, которая возвращает файл через http с заголовками «content-type» и «content-disposition: attachment; filename =».Эта ссылка для скачивания работает нормально в обычном браузере.Но при нажатии на эту ссылку в приложении PhoneGap, кажется, не работает (по крайней мере, в Android 2.3.3), когда ссылка нажата, выполняется вызов на сервер, но тогда ничего не происходит.

Затем я обнаружил функцию API телефонного промежутка с именем FileTranfer.download.Я не знаю, как указать путь к файлу, как узнать местоположение загрузки по умолчанию (кроссплатформенное)?Я пробовал функцию fileSystem.resolveFileSystemURI, но ничего не происходит (нет события успеха или неудачи), также я пробовал следующее предложение fileSystem.root.getDirectory ("download", {create: true});и он висит там, следующая строка, которая является предупреждением, никогда не выполняется.

Может кто-нибудь, пожалуйста, помогите мне, и укажите мне надежный способ загрузки вложения (желательно через прямую ссылку на сервер)

Ответы [ 2 ]

1 голос
/ 10 марта 2014

Если проблема только с Android, то это может помочь вам, и я пробовал это на Android, надеюсь, это будет работать и с IOS.

enter code here
 function fun(){
var dfd = $.Deferred(function (dfd){
var remoteFile = "Your link";
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;
if (device.platform === "Android" && localPath.indexOf("file://") === 0) {
            localPath = localPath.substring(7);
        }

    var ft = new FileTransfer();
    ft.download(remoteFile, localPath, function(entry) {
    dfd.resolve('file downloaded');
     // Do what you want with successful file downloaded and then
    // call the method again to get the next file
    //downloadFile();
            }, fail);
             }, fail);
            }, fail);

           });
            return dfd.promise();

        }
                fun().then(function(msg){
            if(msg==="file downloaded")
            {
            alert("Download complete");
            }
            else
            {
            alert("Download error")
            }
            });
            function fail(){
            alert("error");
        }
0 голосов
/ 02 марта 2012

Ищет полный путь.Так что что-то вроде "/sdcard/download.txt" будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...