Comment résoudre le problème de l'affichage de la progression lors du téléchargement de plusieurs images dans le développement Vue
Avec le développement rapide d'Internet, le téléchargement d'images est devenu l'une des opérations courantes dans notre développement quotidien. Lorsque les utilisateurs doivent télécharger plusieurs images, ils doivent souvent afficher la progression du téléchargement afin que les utilisateurs puissent clairement comprendre l'état et la progression du téléchargement. Pour les développeurs Vue, la manière de résoudre le problème de l'affichage de la progression lors du téléchargement de plusieurs images est devenue une considération technique importante.
Cet article présentera une solution pour afficher la progression du téléchargement d'images à l'aide des composants Vue et des bibliothèques Axios.
Tout d'abord, nous devons créer un composant Vue pour implémenter la fonction de téléchargement d'images. Voici un exemple de composant simple :
<template> <div> <input type="file" multiple @change="uploadImages" /> <ul> <li v-for="(image, index) in uploadedImages" :key="index"> {{ image.name }} </li> </ul> </div> </template> <script> import axios from 'axios'; export default { data() { return { uploadedImages: [], }; }, methods: { async uploadImages(event) { const files = event.target.files; for (let i = 0; i < files.length; i++) { const formData = new FormData(); formData.append('image', files[i]); const config = { headers: { 'Content-Type': 'multipart/form-data', }, onUploadProgress: (progressEvent) => { const percentCompleted = Math.round( (progressEvent.loaded * 100) / progressEvent.total ); console.log(percentCompleted); }, }; try { const response = await axios.post('/upload', formData, config); this.uploadedImages.push(response.data); } catch (error) { console.log(error); } } }, }, }; </script>
Dans le code ci-dessus, nous avons établi un simple composant de téléchargement d'image. Dans le composant, plusieurs fichiers image sélectionnés par l'utilisateur sont obtenus en écoutant l'événement change
de l'élément d'entrée. Nous utilisons ensuite FormData pour créer un formulaire et joindre le fichier image sélectionné au formulaire. change
事件,获取到用户选择的多个图片文件。然后,我们使用FormData来创建一个表单,并将选择的图片文件附加到表单中。
接下来,我们使用axios库来发送POST请求,将图片上传到服务器。在axios请求的配置中,我们使用了onUploadProgress
回调函数来获取上传进度。在回调函数中,我们可以通过对已上传字节数和总字节数的计算,得到上传的进度百分比,并通过控制台打印出来。
最后,我们将服务器返回的上传成功的图片信息存储到组件的uploadedImages
onUploadProgress
pour obtenir la progression du téléchargement. Dans la fonction de rappel, nous pouvons obtenir le pourcentage de progression du téléchargement en calculant le nombre d'octets téléchargés et le nombre total d'octets, et l'imprimer via la console. Enfin, nous stockons les informations sur l'image téléchargée avec succès renvoyées par le serveur dans le tableau uploadedImages
du composant et les affichons sur la page. Lorsque l'utilisateur sélectionne plusieurs images à télécharger, chaque fois qu'une image est téléchargée, l'exécution de la fonction de rappel de progression sera déclenchée. De cette manière, nous pouvons obtenir la progression du téléchargement de chaque image en temps réel et l'afficher à l'utilisateur. Lorsque vous utilisez ce composant, il vous suffit de l'introduire sur la page où vous devez télécharger des images. Par exemple : <template> <div> <image-uploader></image-uploader> </div> </template> <script> import ImageUploader from './ImageUploader.vue'; export default { components: { ImageUploader, }, }; </script>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!