Maison interface Web uni-app Uniapp implémente le téléchargement de la barre de progression

Uniapp implémente le téléchargement de la barre de progression

May 22, 2023 pm 02:26 PM

Avec la popularité de l'Internet mobile, de plus en plus d'applications nécessitent le téléchargement de fichiers, tels que des avatars, des photos, des documents, etc. Pendant le processus de téléchargement de fichiers, les utilisateurs doivent souvent attendre un certain temps pour terminer le téléchargement. À ce stade, la barre de progression est une très bonne méthode d'affichage. Ces dernières années, uniapp est devenu l'un des frameworks les plus populaires pour le développement mobile. Cet article explique comment utiliser uniapp pour implémenter la fonction de téléchargement de fichiers avec une barre de progression.

1. Connaissances préalables

Avant d'étudier cet article en profondeur, vous devez maîtriser les compétences suivantes :

  1. Utilisation de base d'uniapp
  2. Comment utiliser la requête asynchrone ajax
  3. Opérations de base de téléchargement de fichiers

2. Travail de préparation

Tout d'abord, assurez-vous que vue-cli est installé, puis utilisez vue-cli pour créer un projet uniapp. Étant donné que cet article explique principalement l'implémentation de la fonction de téléchargement de fichiers, il n'impliquera pas l'implémentation d'autres fonctions.

3. Processus de mise en œuvre

  1. Créer un composant de téléchargement de fichiers et un composant de barre de progression

1.1 Créer un composant de téléchargement de fichiers

Dans le framework uniapp, la fonction de téléchargement de fichiers peut être facilement implémentée en utilisant le contrôle uni-upload. Créez un composant Upload sous le dossier des composants. Le code est le suivant :

<template>
  <view>
    <uni-upload class="upload-btn" :upload-url="uploadUrl" />
  </view>
</template>

<script>
export default {
  name: "Upload",
  props: {
    uploadUrl: {
      type: String,
      default: ""
    }
  }
};
</script>

<style lang="scss">
.upload-btn {
  width: 100px;
  height: 50px;
  background-color: #409eff;
  color: #fff;
  border: none;
  border-radius: 4px;
  text-align: center;
  line-height: 50px;
  cursor: pointer;
  user-select: none;
}
</style>
Copier après la connexion

1.2 Créer un composant de barre de progression

L'utilisation du composant uni-progress dans la bibliothèque de composants uniui peut facilement implémenter la fonction de barre de progression. Créez un composant ProgressBar dans le dossier des composants. Le code est le suivant :

<template>
  <view>
    <uni-progress :percent="percent" />
  </view>
</template>

<script>
export default {
  name: "ProgressBar",
  props: {
    percent: {
      type: Number,
      default: 0
    }
  }
};
</script>
Copier après la connexion
  1. Implémentez la fonction de barre de progression du téléchargement

2.1 Obtenez la progression du téléchargement du fichier

Pendant le processus de téléchargement du fichier, le serveur renverra la progression du téléchargement en conséquence. . Nous pouvons obtenir la progression du téléchargement en écoutant l'événement progress de l'objet XMLHttpRequest. Ajoutez le code suivant au composant Upload :

<template>
  <view>
    <uni-upload class="upload-btn" :upload-url="uploadUrl" @change="onChange" />
    <ProgressBar :percent="percent" />
  </view>
</template>

<script>
import ProgressBar from "../components/ProgressBar";

export default {
  name: "Upload",
  props: {
    uploadUrl: {
      type: String,
      default: ""
    }
  },
  components: {
    ProgressBar
  },
  data() {
    return {
      percent: 0,
      uploadRequest: null
    };
  },
  methods: {
    onChange(e) {
      const file = e.target.files[0];
      if (!file) return;
      this.uploadRequest = this.uploadFile(file);
    },
    uploadFile(file) {
      const formData = new FormData();
      formData.append("file", file);
      const xhr = new XMLHttpRequest();
      xhr.open("POST", this.uploadUrl);
      xhr.upload.addEventListener("progress", this.updateProgress);
      xhr.send(formData);
      return xhr;
    },
    updateProgress(e) {
      const percent = ((e.loaded / e.total) * 100).toFixed(2);
      this.percent = percent;
    }
  }
};
</script>
Copier après la connexion

Dans la méthode uploadFile, utilisez l'objet XMLHttpRequest pour créer une requête POST et écoutez l'événement de progression de l'attribut upload de l'objet XMLHttpRequest. Chaque fois qu'un événement de téléchargement se produit, la méthode updateProgress sera déclenchée pour mettre à jour le pourcentage de données dans le composant.

2.2 Annuler le téléchargement du fichier

Pendant le processus de téléchargement du fichier, l'utilisateur devra peut-être annuler l'opération de téléchargement. Afin de prendre en charge l'opération d'annulation, nous devons ajouter un bouton d'annulation au composant Upload, ainsi qu'une logique d'annulation de téléchargement à la méthode uploadFile.

<template>
  <view>
    <uni-upload class="upload-btn" :upload-url="uploadUrl" @change="onChange" />
    <ProgressBar :percent="percent" />
    <view class="controls">
      <view class="btn" @click="cancelUpload">取消上传</view>
    </view>
  </view>
</template>

<script>
import ProgressBar from "../components/ProgressBar";

export default {
  name: "Upload",
  props: {
    uploadUrl: {
      type: String,
      default: ""
    }
  },
  components: {
    ProgressBar
  },
  data() {
    return {
      percent: 0,
      uploadRequest: null
    };
  },
  methods: {
    onChange(e) {
      const file = e.target.files[0];
      if (!file) return;
      this.uploadRequest = this.uploadFile(file);
    },
    uploadFile(file) {
      const formData = new FormData();
      formData.append("file", file);
      const xhr = new XMLHttpRequest();
      xhr.open("POST", this.uploadUrl);
      xhr.upload.addEventListener("progress", this.updateProgress);
      xhr.send(formData);
      return xhr;
    },
    updateProgress(e) {
      const percent = ((e.loaded / e.total) * 100).toFixed(2);
      this.percent = percent;
    },
    cancelUpload() {
      if (this.uploadRequest) {
        this.uploadRequest.abort();
      }
    }
  }
};
</script>

<style lang="scss">
.controls {
  margin-top: 10px;
}

.btn {
  background-color: #ff4949;
  color: #fff;
  width: 100px;
  height: 30px;
  text-align: center;
  line-height: 30px;
  border-radius: 4px;
  cursor: pointer;
  user-select: none;
}
</style>
Copier après la connexion

Lorsque l'utilisateur clique sur le bouton Annuler le téléchargement, la méthode CancelUpload sera exécutée. À ce moment, l'opération de téléchargement sera annulée en appelant la méthode abort de l'objet XMLHttpRequest.

4. Résumé

Dans cet article, nous avons implémenté une fonction de barre de progression de téléchargement de fichiers en utilisant le framework uniapp combiné avec des composants de la bibliothèque de composants uniui. Avec l'événement onprogress de l'objet XMLHttpRequest, nous pouvons obtenir la progression du téléchargement dans le temps et annuler l'opération de téléchargement en appelant la méthode abort de l'objet XMLHttpRequest. Cette petite fonctionnalité peut non seulement augmenter l'expérience utilisateur de l'application, mais également aider les développeurs à mieux comprendre l'utilisation des objets XMLHttpRequest et les principes de base du framework uniapp.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quels sont les différents types de tests que vous pouvez effectuer dans une application UNIAPP? Quels sont les différents types de tests que vous pouvez effectuer dans une application UNIAPP? Mar 27, 2025 pm 04:59 PM

L'article traite de divers types de tests pour les applications UNIAPP, y compris l'unité, l'intégration, les tests fonctionnels, UI / UX, les performances, la plate-forme multiplateforme et la sécurité. Il couvre également une compatibilité multiplateforme et recommande des outils comme JES

Comment pouvez-vous réduire la taille de votre package d'application UNIAPP? Comment pouvez-vous réduire la taille de votre package d'application UNIAPP? Mar 27, 2025 pm 04:45 PM

L'article traite des stratégies pour réduire la taille du package UNIAPP, en se concentrant sur l'optimisation du code, la gestion des ressources et les techniques comme le fractionnement du code et le chargement paresseux.

Quels outils de débogage sont disponibles pour le développement UNIAPP? Quels outils de débogage sont disponibles pour le développement UNIAPP? Mar 27, 2025 pm 05:05 PM

L'article traite des outils de débogage et des meilleures pratiques pour le développement de l'UNIAPP, en se concentrant sur des outils comme HBuilderx, WeChat Developer Tools et Chrome Devtools.

Comment pouvez-vous utiliser le chargement paresseux pour améliorer les performances? Comment pouvez-vous utiliser le chargement paresseux pour améliorer les performances? Mar 27, 2025 pm 04:47 PM

Le chargement paresseux dépasse les ressources non critiques pour améliorer les performances du site, réduire les temps de chargement et l'utilisation des données. Les pratiques clés incluent la priorité au contenu critique et l'utilisation d'API efficaces.

Comment pouvez-vous optimiser les images pour les performances Web à UniApp? Comment pouvez-vous optimiser les images pour les performances Web à UniApp? Mar 27, 2025 pm 04:50 PM

L'article discute de l'optimisation des images dans UniaPP pour de meilleures performances Web par compression, conception réactive, chargement paresseux, mise en cache et utilisation du format WebP.

Quels sont les modèles communs pour gérer des structures de données complexes dans UNIAPP? Quels sont les modèles communs pour gérer des structures de données complexes dans UNIAPP? Mar 25, 2025 pm 02:31 PM

L'article discute de la gestion des structures de données complexes dans l'UNIAPP, en se concentrant sur des modèles tels que Singleton, Observer, Factory et State, et des stratégies pour gérer les changements d'état de données à l'aide de l'API de composition Vuex et Vue 3.

Comment UniApp gère-t-il la configuration et le style global? Comment UniApp gère-t-il la configuration et le style global? Mar 25, 2025 pm 02:20 PM

UniApp gère la configuration globale via Manifest.json et le style via app.vue ou app.scss, en utilisant Uni.scss pour les variables et les mixins. Les meilleures pratiques incluent l'utilisation de SCSS, de styles modulaires et de conception réactive.

Quelles sont les propriétés calculées à UniApp? Comment sont-ils utilisés? Quelles sont les propriétés calculées à UniApp? Comment sont-ils utilisés? Mar 25, 2025 pm 02:23 PM

Les propriétés calculées de l'UNIAPP, dérivées de Vue.js, améliorent le développement en fournissant une gestion des données réactive, réutilisable et optimisée. Ils mettent automatiquement à jour lorsque les dépendances changent, offrant des avantages de performance et simplifiant la gestion de l'État

See all articles