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?
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});
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);
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!