2012-03-11 2 views
3

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

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

ответ

1

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

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

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

7
var uploadedSoFar = uploadSpeed * (Date.now() - timeStarted.milliseconds)/1000; 
var timeRemaining = ((fileSize - uploadedSoFar)/uploadSpeed) + ' seconds'; 
+0

Очень полезно ... –

1

Вам не нужно переменная 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 
} 
+0

Как я могу определить количество загруженного – Till

+0

@Till 'XMLHttpRequest.upload.onprogress' событие имеет 2 свойства, необходимо:' 'loaded' и total' –

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