2016-04-28 1 views
1

Мне нужно обновить клиент по размеру загружаемого файла, вроде того, как это делается на YouTube: вы загружаете файл и до тех пор, пока он не будет загружен на 100% получите обновление о том, сколько из них было загружено до сих пор. Я знаю, что вы можете получить размер файла, который кто-то хочет загрузить, с multipart req.files.myFile.size, и это даст вам полный размер файла. Но есть ли способ получить текущий размер файла на диске? Благодарю вас!Node.js - Multipart: XMLHttpRequest получает прогресс в AJAX POST

ответ

1

Вы можете сделать это с помощью события XHR2 progress, как задокументировано here on MDN. Например:

var xhr = new XMLHttpRequest(); 
xhr.open('POST', '/upload', true); 
xhr.onload = function(e) { ... }; 

// `progress#uploadProgress` looks something like: 
// <progress id="uploadProgress" min="0" max="100" value="0">0%</progress> 
var progressBar = document.querySelector('progress#uploadProgress'); 
// Listen to the upload progress. 
xhr.upload.onprogress = function(e) { 
    if (e.lengthComputable) { 
    progressBar.value = (e.loaded/e.total) * 100; 
    progressBar.textContent = progressBar.value; 
    } 
}; 

var form = new FormData(document.querySelector('form#uploadForm')); 
xhr.send(form); 

Это даст вам прогресс всей формы, но не для отдельных файлов.

+0

Есть ли способ слушать сообщение ajax с xhr? Потому что я должен загрузить его с помощью ajax, когда отображается прогресс. Спасибо! – Jim

+0

Я не уверен, что вы имеете в виду .... xhr is ajax ... – mscdex

+0

О, это так? Мне жаль, что я никогда с этим не работал и ... да. Но дело в том, что когда я console.log (req.files), я получаю пустой объект, так что ... как насчет этого? – Jim

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