사용자가 파일을 선택할 수 있는 버튼을 나타내는 HTML 요소 이 있다고 가정합니다. 버튼을 클릭하고 파일을 선택하면 해당 이름이 document.getElementById("image-file").value에 저장됩니다. 서버가 URL "/upload/image"에서 다중 부분 POST 요청을 지원하는 경우 해당 엔드포인트로 파일을 어떻게 보내나요? 또한 업로드 진행 상황을 어떻게 모니터링합니까?
선택적인 wait-try-catch 처리와 함께 fetch API를 사용할 수 있습니다.
let photo = document.getElementById("image-file").files[0]; let formData = new FormData(); formData.append("photo", photo); fetch('/upload/image', {method: "POST", body: formData});
이 예에는 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>업로드 진행률 모니터링</h3> <p>안타깝게도 request.onprogress와 같은 메서드는 JSON으로 전송되지 않습니다. 가져오기를 통한 HTML5 파일 업로드에서 지원되지만 네트워크 이벤트를 수신하여 전체 업로드 진행 상황을 모니터링할 수 있습니다.</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);
위 내용은 JavaScript를 사용하여 서버에 파일을 보내고 업로드 진행 상황을 모니터링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!