Расчет оставшегося времени загрузки

Я использую плагин Uploadify, чтобы пользователи могли загружать файлы, и у меня работает индикатор выполнения. Теперь я хочу дать пользователю расчетное время до завершения, но я не уверен, как его рассчитать с помощью Javascript.

Предположим, у меня есть следующие переменные: uploadSpeed (в КБ/с), timeStarted (объект даты Javascript?), fileSize (размер файла в байтах). Как рассчитать обратный отсчет до полной загрузки файла?


person James Dawson    schedule 11.03.2012    source источник


Ответы (2)


Это просто математический вопрос? Если это так, возьмите разницу между timeStarted и timeNow, умножьте ее на скорость загрузки, возьмите результат, вычтите его из размера файла и разделите на свою скорость загрузки. Это ваше оставшееся время (при условии, что скорость загрузки постоянна в любое время).

(fileSize - (timeNow - timeStarted) * uploadSpeed) / uploadSpeed

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

person Amberlamps    schedule 11.03.2012

Вам действительно не нужна переменная timeStarted, поскольку uploadSpeed ​​​​не является постоянной, вам лучше отслеживать количество загруженных байтов.

var uploaded  // ammount of bytes uploaded
setInterval("updateProgress()", 1000) //every second updates the uploaded counter
function updateProgress(){
    uploaded += uploadSpeed //increments the ammount of bytes uploaded in a second
    updateProgressBar((uploaded/fileSize)*100) // update progress bar
}
person kumiau    schedule 11.03.2012
comment
Как я могу определить количество загруженных - person Micah; 05.03.2013
comment
Событие @Till XMLHttpRequest.upload.onprogress имеет 2 необходимых свойства: loaded и total - person ; 14.01.2014