J'utilise les codes suivants pour télécharger des fichiers. Le fichier sera envoyé via superagent au format blob, le convertira en dataURI lorsqu'il atteindra le serveur et sauvegardera dans AWS S3.Barre de progression pour le téléchargement de super-agent
files.forEach((file) => {
superagent.post('http://localhost:3030/uploads')
.attach('file', file)
.on('progress', e => {
console.log('Percentage done: ', e);
})
.end((err, res) => {
// console.log(err);
console.log(res);
});
});
Le chargement de fichier fonctionne mais la barre de progression n'est pas remplie correctement.
Selon la capture d'écran, vous pouvez voir que le pourcentage télécharger ProgressEvent a pris fin très rapidement à 100%, en raison à la fois frontend et backend hébergé dans un même serveur.
La progression du téléchargement a continué en arrière-plan, mais la direction est devenu « télécharger » au lieu de « télécharger » de 14:14:08 à 14:14:14 et complété par une réponse.
Je ne pouvais pas calculer les progrès en fonction de « total - chargé » aussi, parce que pendant le « télécharger » le progrès, le total est 0.
essayé de remplacer superagent avec Axios et a frappé le même problème.
files.forEach((file) => {
const url = 'http://localhost:3030/uploads';
const formData = new FormData();
const config = {
headers: {
'content-type': 'multipart/form-data'
},
onUploadProgress: e => {
console.log('Upload: ', e);
},
onDownloadProgress: e => {
console.log('Download: ', e);
}
};
formData.append('file', file);
axios.post(url, formData, config)
.then(res => console.log(res))
.catch(err => console.log(err));
});
Comment pourrais-je construire une barre de progression? Puis-je conclure que le «téléchargement» est le processus de téléchargement sur le serveur, alors que «télécharger» est le processus de téléchargement vers AWS?
Vous ne pouvez pas vraiment mesurer cette façon, peut-être essayer websockets, mais avant de lire https://stackoverflow.com/a/48412965/2805357 il convient de préciser ce qui est arrivé ici. – djra