>웹 프론트엔드 >JS 튜토리얼 >JavaScript를 사용하여 서버로 파일을 전송하는 방법은 무엇입니까?

JavaScript를 사용하여 서버로 파일을 전송하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-15 07:51:02496검색

How to Transmit Files to a Server Using JavaScript?

JavaScript를 사용한 파일 업로드

웹페이지에서 사용자가 파일 입력 요소를 사용하여 파일을 선택할 수 있는 경우 선택한 파일 이름은 다음에서 검색할 수 있습니다. document.getElementById("image-file").value. 그런데 이 파일을 서버로 어떻게 전송합니까?

파일 업로드의 경우 JavaScript는 여러 가지 접근 방식을 제공합니다. 한 가지 옵션은 Fetch API를 사용하는 것입니다.

Pure JS(Fetch)

let photo = document.getElementById("image-file").files[0];
let formData = new FormData();
     
formData.append("photo", photo);
fetch('/upload/image', {method: "POST", body: formData});

이 접근 방식은 formData 객체를 생성하고 선택한 파일을 여기에 추가하며 다음을 사용합니다. formData를 지정된 URL로 보내기 위한 가져오기.

파일 업로드 상태 알림

파일 업로드 완료를 수신하려면 XMLHttpRequest 객체를 사용하여 FormData 객체를 생성할 수 있습니다. onreadystatechange 이벤트 리스너를 설정합니다. 파일 업로드가 완료되면 이벤트의 ReadyState 속성은 4가 됩니다.

// Register file input
const fileInput = document.getElementById('image-file');

// Add event listener for onreadystatechange
fileInput.addEventListener('change', (e) => {
  const files = e.target.files;
  
  if (files.length > 0) {
    // Create a FormData object
    const formData = new FormData();
    
    // Append selected files to FormData object
    for (const file of files) {
      formData.append('files', file);
    }

    // Create an XMLHttpRequest object
    const xhr = new XMLHttpRequest();

    // Open a POST request to the server
    xhr.open('POST', '/upload/image');

    // Set the onreadystatechange event listener
    xhr.onreadystatechange = () => {
      if (xhr.readyState === 4) {
        if (xhr.status === 200) {
          // File upload completed successfully
          console.log('File uploaded successfully!');
        } else {
          // File upload failed
          console.error('File upload failed!');
        }
      }
    };

    // Send the FormData object
    xhr.send(formData);
  }
});

위 내용은 JavaScript를 사용하여 서버로 파일을 전송하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.