Maison  >  Article  >  développement back-end  >  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

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

王林
王林original
2023-06-29 11:28:431223parcourir

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

Ensuite, nous utilisons la bibliothèque axios pour envoyer une requête POST afin de télécharger l'image sur le serveur. Dans la configuration de la requête axios, nous utilisons la fonction de rappel 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>

Grâce à l'exemple de code ci-dessus, nous pouvons réaliser la fonction d'affichage de la progression lors du téléchargement de plusieurs images. En développement réel, nous pouvons étendre et personnaliser les composants en fonction des besoins du projet pour répondre à des exigences plus fonctionnelles. 🎜🎜Pour résumer, dans le développement de Vue, pour résoudre le problème d'affichage de la progression lors du téléchargement de plusieurs images, vous devez utiliser les composants Vue et la bibliothèque Axios. En surveillant la fonction de rappel de la progression du téléchargement, nous pouvons obtenir la progression du téléchargement de chaque image en temps réel et l'afficher à l'utilisateur, améliorant ainsi l'expérience utilisateur. J'espère que la méthode présentée dans cet article sera utile aux développeurs Vue pour résoudre le problème de l'affichage de la progression du téléchargement des images. 🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn