2013-09-28 7 views
4

Я разрабатываю приложение для Android с помощью Cordova. Я уже знаком с FileTransfer, и я уже знаю, как загрузить файл. Проблема в том, что когда я загружаю большой файл (20 МБ), тогда эта загрузка занимает некоторое время, не уведомляя пользователя о том, что что-то происходит на самом деле.Загрузить файл через FileTransfer в Cordova

Все мне удалось это загрузка файла в сд карту через:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail); 

, а затем показать диалог с пользователем, который скачивает файл и где он (она) может его найти. Но я хочу сообщить пользователю о прогрессе. Или можно каким-то образом обработать эту передачу файлов в фоновом режиме, чтобы пользователь мог видеть значок загрузки в верхней панели Android так же, как при загрузке файла через браузер по умолчанию?

Благодарим за помощь.

Код:

document.addEventListener('deviceready', function() {     
    window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, function(){ 
     console.log("error getting LocalFileSystem"); 
    }); 
}, false); 

function gotFS(fileSystem) { 
    // save the file system for later access 
    window.rootFS = fileSystem.root; 
} 

fileTransfer.download(
    http://somewhere.com/bigfile.zip, 
    window.rootFS, 
    function(entry) { 
     console.log("download complete: " + entry.fullPath); 
    }, 
    function(error) { 
     console.log("download error source " + error.source); 
    }, 
); 
+0

@ jan.zdrazil ... показать ваш более код для понятного толчка .... – FarhaSameer786

+0

Включено в вопрос сейчас. –

ответ

11

Raymond Camden написал хорошую статью об этом. Вы можете использовать загрузчик для того, чтобы показать ProgressBar при использовании прогресс-функции PhoneGap для того, чтобы прогресс бар расти:

fileTransfer.onprogress = function(progressEvent) { 
if (progressEvent.lengthComputable) { 
loadingStatus.setPercentage(progressEvent.loaded/progressEvent.total); 
} else { 
loadingStatus.increment(); 
} 
}; 

Read here

+0

Спасибо за помощь, этого достаточно для меня. –

+0

Пожалуйста, не забудьте «проголосовать», когда найдете ответ полезным. Thx, рад, что я могу вам помочь. – TorchMan

+0

Я сделал, но моя репутация ниже 15, поэтому я не могу этого сделать. Поэтому я сожалею об этом. –

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