Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie sende ich eine Datei an einen Server und überwache ihren Upload-Fortschritt mithilfe von JavaScript?

DDD
Freigeben: 2024-11-10 09:36:02
Original
149 Leute haben es durchsucht

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

Dateien in JavaScript senden

Angenommen, Sie haben ein HTML-Element , das eine Schaltfläche darstellt, mit der Benutzer eine Datei auswählen können. Wenn Sie auf die Schaltfläche klicken und eine Datei auswählen, wird ihr Name in document.getElementById("image-file").value gespeichert. Wenn der Server mehrteilige POST-Anfragen unter der URL „/upload/image“ unterstützt, wie senden Sie die Datei an diesen Endpunkt? Wie überwachen Sie außerdem den Fortschritt des Uploads?

Reines JavaScript mit Fetch

Sie können die Fetch-API mit optionaler Wait-Try-Catch-Behandlung verwenden:

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

formData.append("photo", photo);
fetch('/upload/image', {method: "POST", body: formData});
Nach dem Login kopieren

Beispiel mit Async-Try-Catch

Dieses Beispiel umfasst auch als JSON gesendete Benutzerdaten:

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>Upload-Fortschritt überwachen</h3>
<p>Methoden wie request.onprogress sind dies leider nicht wird beim Hochladen von HTML5-Dateien mit Fetch unterstützt, aber Sie können den gesamten Upload-Fortschritt überwachen, indem Sie Netzwerkereignisse abhören:</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);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie sende ich eine Datei an einen Server und überwache ihren Upload-Fortschritt mithilfe von JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage