2016-04-28 1 views
1

Je dois mettre à jour le client sur la taille du fichier qui est téléchargé, un peu comme YouTube le fait: vous téléchargez un fichier et jusqu'à ce qu'il soit téléchargé à 100% vous obtenir une mise à jour sur la quantité de ce qui a été téléchargé jusqu'à présent. Je sais que vous pouvez obtenir la taille du fichier que quelqu'un veut télécharger, avec multipart req.files.myFile.size et qui vous donnera la taille complète du fichier. Mais existe-t-il un moyen d'obtenir la taille actuelle du fichier sur le disque? Merci!Node.js - Multipart: XMLHttpRequest obtenir la progression de AJAX POST

Répondre

1

Vous pouvez le faire avec l'événement progress de XHR2 tel que documenté here on MDN. Par exemple:

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); 

Cela vous donnera la progression de l'ensemble du formulaire, mais pas pour les fichiers individuels.

+0

Existe-t-il un moyen d'écouter un message ajax avec xhr? Parce que je dois le télécharger avec ajax, quand les progrès affichés. Je vous remercie! – Jim

+0

Je ne suis pas sûr de ce que vous voulez dire ... xhr est "ajax" ... – mscdex

+0

Oh, c'est? Je suis désolé je n'ai jamais travaillé avec ça et ... ouais. Mais la chose est, quand je console.log (req.files) je reçois un objet vide, alors ... qu'en est-il de ça? – Jim