{}const=>[]async()letfn</>var
WebPratique

Chargement du fichier avec la barre de progression

Apprenez à mettre en œuvre le téléchargement de fichiers avec une barre de progression en JavaScript. Guide étape par étape avec des exemples pour améliorer l'interface utilisateur.

К

Kodik

Auteur

5 min de lecture

Bonjour ! Aujourd'hui, je vais vous aider à créer un système simple et pratique pour télécharger des fichiers avec affichage de la progression en JavaScript. Cette fonctionnalité est utile lorsque l'utilisateur doit télécharger des fichiers volumineux et qu'il est important de voir l'avancement du processus.

Décomposons ce processus étape par étape, avec des explications détaillées de chaque étape.

Étape 1. Création d'un formulaire HTML pour le téléchargement de fichiers

Tout d'abord, nous devons créer un formulaire qui permettra à l'utilisateur de sélectionner un fichier à télécharger. En HTML, cela se fait à l'aide de l'élément <input> avec le type file.

Modèle HTML :

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>File Upload with Progress</title>
</head>
<body>
  <h1>Загрузка файла с прогрессом</h1>
  <form id="uploadForm">
    <input type="file" id="fileInput" name="file" />
    <button type="submit">Загрузить файл</button>
  </form>

  <!-- Прогресс-бар -->
  <progress id="progressBar" value="0" max="100" style="width: 100%;"></progress>

  <!-- Результат -->
  <div id="status"></div>

  <script src="script.js"></script>
</body>
</html>

📋 Explication:

  • L'élément <input type="file"> permet à l'utilisateur de sélectionner un fichier à télécharger.

  • La barre de progression <progress> affiche le pourcentage de chargement du fichier.

  • L'élément <div id="status"> sera utilisé pour afficher les messages d'état de chargement (succès ou erreur).

Étape 2. Ajout d'un gestionnaire d'événements de formulaire

Lorsqu'un utilisateur sélectionne un fichier et clique sur le bouton « Télécharger », nous devons intercepter cet événement et transférer le fichier vers le serveur. Pour ce faire, nous allons ajouter un gestionnaire de formulaire et annuler son comportement standard (rechargement de la page).

Ajoutons un gestionnaire à script.js :

document.getElementById('uploadForm').addEventListener('submit', function (event) {
  event.preventDefault(); // Annulation du comportement standard du formulaire
  const fileInput = document.getElementById('fileInput');
  const file = fileInput.files[0];

  if (file) {
    uploadFile(file); // Nous transmettons le fichier à la fonction de téléchargement
  } else {
    alert('Please select a file.');
  }
});

🛑 Que se passe-t-il ici:

  • Nous écoutons l'événement submit sur le formulaire.

  • Annuler le comportement d'envoi de formulaire standard.

  • On vérifie si l'utilisateur a sélectionné un fichier et, si oui, on appelle la fonction pour télécharger le fichier uploadFile().

Étape 3. Configuration du téléchargement de fichiers à l'aide de XMLHttpRequest

Passons maintenant à la partie principale : le téléchargement d'un fichier sur le serveur avec suivi de la progression. Pour cela, nous utiliserons l'objet XMLHttpRequest, qui nous permet d'envoyer des fichiers et de recevoir des informations sur la progression du téléchargement.

Implémentation de la fonction uploadFile :

function uploadFile(file) {
  const xhr = new XMLHttpRequest(); // Créons un nouveau XMLHttpRequest
  const formData = new FormData(); // Nous utilisons FormData pour envoyer un fichier

  formData.append('file', file); // Ajout d'un fichier à l'objet FormData

  // Gestionnaire pour suivre la progression du chargement
  xhr.upload.addEventListener('progress', function (event) {
    if (event.lengthComputable) {
      const percentComplete = (event.loaded / event.total) * 100;
      document.getElementById('progressBar').value = percentComplete; // Mise à jour de la barre de progression
    }
  });

  // Gestionnaire en cas de chargement réussi
  xhr.addEventListener('load', function () {
    if (xhr.status === 200) {
      document.getElementById('status').textContent = 'File uploaded successfully!';
    } else {
      document.getElementById('status').textContent = 'Error loading file.';
    }
  });

  // Gestionnaire d'erreurs
  xhr.addEventListener('error', function () {
    document.getElementById('status').textContent = 'An error occurred while uploading the file.';
  });

  xhr.open('POST', '/upload'); // Indiquez la méthode et l'URL pour envoyer le fichier
  xhr.send(formData); // Envoi des données
}

📦 Analyse du travail:

  1. Création XMLHttpRequest : Cet objet est responsable de l'envoi des requêtes HTTP.

  2. FormData : Nous utilisons FormData pour emballer les données du fichier qui seront envoyées au serveur.

  3. Suivi des progrès: Nous utilisons l'événement progress pour suivre le nombre d'octets téléchargés sur le serveur et mettre à jour notre barre de progression.

  4. Traitement de la fin du chargement: Si le chargement a réussi (statut 200), nous affichons un message de chargement réussi, sinon nous affichons un message d'erreur.

  5. Traitement des erreurs: Nous suivons l'erreur lors du chargement et informons l'utilisateur en cas d'échec.

Étape 4. Configuration du serveur pour le traitement du fichier

Pour terminer notre projet, vous devez configurer un serveur qui recevra le fichier. À titre d'exemple, vous pouvez utiliser un serveur Node.js utilisant la bibliothèque express et le paquet multer, qui aide à traiter les fichiers téléchargés.

Exemple de serveur Node.js :

const express = require('express');
const multer = require('multer');
const path = require('path');

const app = express();
const upload = multer({ dest: 'uploads/' }); // Indiquez le dossier pour télécharger les fichiers

// Itinéraire pour le téléchargement du fichier
app.post('/upload', upload.single('file'), (req, res) => {
  if (!req.file) {
    return res.status(400).send('File was not uploaded.');
  }

  res.send('File uploaded successfully!');
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

🌍 Explication:

  • Nous utilisons la bibliothèque multer pour traiter les fichiers téléchargés.

  • Le serveur accepte le fichier, le télécharge dans le dossier spécifié (uploads/) et renvoie la réponse au client.


Étape 5. Test

Maintenant que nous avons configuré le côté client et le côté serveur, nous pouvons tester le téléchargement de fichiers. Démarrez le serveur, ouvrez la page avec le formulaire de téléchargement, sélectionnez un fichier et vous verrez la barre de progression se remplir au fur et à mesure du téléchargement du fichier.


Conclusion

Le téléchargement d'un fichier avec une barre de progression est un excellent moyen d'améliorer l'expérience utilisateur, en particulier lorsque vous travaillez avec des fichiers volumineux. L'utilisateur voit comment le processus progresse, ce qui rend son interaction avec l'application plus compréhensible et transparente.

Si vous avez des questions ou si vous souhaitez ajouter des fonctionnalités supplémentaires, telles que la prise en charge de plusieurs fichiers ou l'affichage du temps restant, faites-le nous savoir ! 👨‍💻

🎯Arrête de reporter

Tu as aimé l'article ?
Place à la pratique !

Avec Kodik, tu ne lis pas seulement — tu codes immédiatement. Théorie + pratique = vraies compétences.

Pratique instantanée
🧠L'IA explique le code
🏆Certificat

Sans inscription • Sans carte