Maison > interface Web > js tutoriel > Comment envoyer un fichier à un serveur et suivre la progression de son téléchargement à l'aide de JavaScript ?

Comment envoyer un fichier à un serveur et suivre la progression de son téléchargement à l'aide de JavaScript ?

DDD
Libérer: 2024-11-10 09:36:02
original
201 Les gens l'ont consulté

How to send a file to a server and monitor its upload progress using JavaScript?

Envoi de fichiers en JavaScript

Supposons que vous ayez un élément HTML représentant un bouton qui permet aux utilisateurs de sélectionner un fichier. En cliquant sur le bouton et en choisissant un fichier, son nom est stocké dans document.getElementById("image-file").value. Si le serveur prend en charge les requêtes POST en plusieurs parties à l'URL « /upload/image », comment envoyer le fichier à ce point de terminaison ? De plus, comment suivez-vous la progression du téléchargement ?

JavaScript pur avec Fetch

Vous pouvez utiliser l'API fetch avec la gestion facultative wait-try-catch :

let photo = document.getElementById("image-file").files[0];
let formData = new FormData();

formData.append("photo", photo);
fetch('/upload/image', {method: "POST", body: formData});
Copier après la connexion

Exemple avec Async-Try-Catch

Cet exemple inclut également les données utilisateur envoyées en tant que JSON :

async function SavePhoto(inp) {
  let user = { name: 'john', age: 34 };
  let formData = new FormData();
  let photo = inp.files[0];

  formData.append("photo", photo);
  formData.append("user", JSON.stringify(user));

  const ctrl = new AbortController(); // for timeout
  setTimeout(() => ctrl.abort(), 5000);

  try {
    let r = await fetch('/upload/image', {
      method: "POST",
      body: formData,
      signal: ctrl.signal,
    });
    console.log('HTTP response code:', r.status);
  } catch (e) {
    console.log('Huston we have problem...:', e);
  }
}</p>
<h3>Surveillance de la progression du téléchargement</h3>
<p>Malheureusement, des méthodes telles que request.onprogress ne sont pas prises en charge dans le téléchargement de fichiers HTML5 avec récupération, mais vous pouvez surveiller la progression globale du téléchargement en écoutant les événements réseau. :</p>
<pre class="brush:php;toolbar:false">let xhr = new XMLHttpRequest();

xhr.upload.addEventListener('progress', function(e) {
  if (e.lengthComputable) {
    let percentComplete = (e.loaded / e.total) * 100;
    console.log('Upload progress:', percentComplete + '%');
  }
});

xhr.open('POST', '/upload/image');
xhr.send(formData);
Copier après la connexion

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal