Расчет оставшегося времени загрузки - PullRequest
3 голосов
/ 11 марта 2012

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

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

Ответы [ 3 ]

7 голосов
/ 11 марта 2012
var uploadedSoFar = uploadSpeed * (Date.now() - timeStarted.milliseconds) / 1000;
var timeRemaining = ((fileSize - uploadedSoFar) / uploadSpeed) + ' seconds';
1 голос
/ 11 марта 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
}
1 голос
/ 11 марта 2012

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

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

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

...