2014-11-13 1 views
1

Предположим, что соединение на мобильном телефоне слабое и застревает, как я могу прервать передачу файла в процессе до того, как загрузочный счетчик выкопал отверстие на экране?org.apache.cordova.file-transfer как отменить файл загрузки

док здесь https://github.com/apache/cordova-plugin-file-transfer/blob/master/doc/index.md#abort

Согласно использованию документации метода прерывания() должен это делать, но выглядит никак. И iOS, и Android. Функция загрузки работает. Однако прерывание ничего не делает. В любом случае файл загружается после вызова abort(). Даже через 10 секунд.

у меня есть:

function downloadMyFilePlease() { 

var fileTransfer = new FileTransfer(); 
var uri = encodeURI("http://some.server.com/download.php"); 

fileTransfer.onprogress = function(progressEvent) { 
     //... 
                 }; 

fileTransfer.download(
    uri, 
    fileURL, 
    function(entry) { 
     console.log("download complete: " + entry.toURL()); 
    }, 
    function(error) { 
     console.log("download error source " + error.source); 
     console.log("download error target " + error.target); 
     console.log("upload error code" + error.code); 
    }, 
    false, 
    { 
     headers: { 
      "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA==" 
     } 
    } 
); 

} 

function abortFileTrasfer() { // called on Abort button click 

    fileTransfer.abort(); // <------ Why are you not working??? 
} 

Что мне не хватает?

ответ

2

Переменная fileTransfer не определена внутри функции abortFileTrasfer(), это локальная переменная внутри downloadMyFilePlease(), поэтому вы не можете получить к ней доступ в abortFileTrasfer().

+0

Спасибо, у меня было это чувство. Ну, я думаю, что не будет других передач файлов одновременно. Как вы думаете, что приведение var fileTransfer = new FileTransfer(); прямо перед функцией, будет в безопасности и исправить? Или есть другое лучшее решение? – sasha

+0

@sasha, да, я считаю, что это сработает, но не забывайте удалять 'fileTransfer' из памяти, когда вам это больше не нужно. –

+0

для удаления 'fileTransfer', что лучший способ? 'fileTransfer.destroy()' или 'fileTransfer = []' не может найти четкий ответ. Извините за этот вопрос, но не используется для этого кодирования уровня JS. – sasha