파일 업로드

Frontend SELF KO
레벨 9 , 레슨 5
사용 가능

11.1 <input type="file"> 요소

웹 애플리케이션은 종종 사용자들에게 서버로 파일을 업로드하도록 요구해. 이건 문서, 이미지, 비디오, 다른 데이터 타입들을 업로드할 때 유용할 수 있어. HTML은 파일 업로드 인터페이스를 만들기 위해 <input type="file"> 요소를 제공해. 아래에서 이 요소와 multiple, accept 같은 속성들을 자세히 살펴볼 거야.

<input type="file"> 요소는 사용자들이 기기에서 파일을 선택하고 서버에 업로드할 수 있도록 하는 인터페이스 요소를 만들어. 이건 HTML 폼의 주요 요소 중 하나로, 웹 애플리케이션에 파일 업로드 기능을 통합할 수 있어.

<input type="file"> 요소의 주요 속성

  1. type="file" — 요소가 파일 선택을 위한 것임을 정의해.
  2. name — 폼 데이터를 서버로 전송할 때 사용될 요소의 이름을 설정해.
  3. multiple — 사용자가 여러 파일을 동시에 선택할 수 있도록 해줘.
  4. accept — MIME 타입이나 파일 확장자를 사용해서 선택할 수 있는 파일 타입을 지정해.

<input type="file"> 요소 사용 예제

간단한 예제

추가 속성이 없는 가장 심플한 파일 업로드 요소 예제:

HTML
    
      <form action="/upload" method="post" enctype="multipart/form-data">
        <label for="file">파일 선택:</label>
        <input type="file" id="file" name="file">
        <button type="submit">업로드</button>
      </form>
    
  

11.2 multiple 속성

<input type="file"> 요소는 기능을 확장하는 여러 속성을 지원해. 그 중 두 가지: multiple과 accept를 살펴보자.

multiple 속성은 사용자들이 여러 파일을 업로드할 수 있게 해줘. 이 속성을 추가하면, 사용자들은 파일 선택 창에서 여러 파일을 선택할 수 있어.

사용 예제:

HTML
    
      <form action="/upload" method="post" enctype="multipart/form-data">
        <label for="files">파일 선택:</label>
        <input type="file" id="files" name="files" multiple>
        <button type="submit">업로드</button>
      </form>
    
  
이건 유용해

파일 선택 창에서, 사용자는 Ctrl (Mac에서는 Cmd) 또는 Shift 키를 눌러 동시에 여러 파일을 선택하고 업로드할 수 있어.

11.3 accept 속성

accept 속성은 사용자가 선택할 수 있는 파일 타입을 제한해. 이건 사용자들이 허용된 파일 타입(예: 이미지나 문서)만 업로드하도록 보장하기 위해 유용해.

사용 예제:

HTML
    
      <form action="/upload" method="post" enctype="multipart/form-data">
        <label for="image">이미지 선택:</label>
        <input type="file" id="image" name="image" accept="image/*">
        <button type="submit">업로드</button>
      </form>
    
  

accept 속성은 선택할 수 있는 파일 타입을 제한해. 이건 MIME 타입이나 파일 확장자를 통해 할 수 있어. 위의 예제에서 사용자는 이미지 파일만 선택할 수 있어.

accept 속성 값의 예제

파일 타입 제한:

  • accept="image/*": 모든 이미지
  • accept="video/*": 모든 비디오 파일
  • accept="audio/*": 모든 오디오 파일

파일 확장자 제한:

  • accept=".jpg/.jpeg/.png": JPEG 및 PNG 형식의 이미지만
  • accept=".pdf/.doc/.docx": PDF 및 워드 문서만

11.4 클라이언트 측에서 파일 처리

때때로 서버로 전송하기 전에 클라이언트 측에서 파일을 처리해야 할 때가 있어. 예를 들어, 이미지를 미리보기로 보여주거나 파일의 크기를 확인할 수 있어. 이를 위해 JavaScript를 사용해.

이미지 미리보기 예제:

HTML
    
      <form action="/upload" method="post" enctype="multipart/form-data">
        <label for="image">이미지 선택:</label>
        <input type="file" id="image" name="image" accept="image/*">
        <div id="preview"></div>
        <button type="submit">업로드</button>
      </form>
    
  
JavaScript
    
      document.getElementById('image').addEventListener('change', function(event) {
        const preview = document.getElementById('preview');
        preview.innerHTML = '';

        const files = event.target.files;

        for (let i = 0; i < files.length; i++) {
          const file = files[i];
          const reader = new FileReader();

          reader.onload = function(e) {
            const img = document.createElement('img');
            img.src = e.target.result;
            img.style.maxWidth = '200px';
            preview.appendChild(img);
          }
          reader.readAsDataURL(file);
        }
      });
    
  

설명

  • FileReader: 클라이언트 측에서 파일 내용을 읽는데 사용돼
  • reader.onload: 파일이 완전히 읽혔을 때 실행되는 이벤트
  • reader.readAsDataURL(file): 파일을 읽고 그것을 Data URL로 인코딩하여 <img> 태그에 표시할 수 있게 해줘
1
Опрос
폼 요소,  9 уровень,  5 лекция
недоступен
폼 요소
폼 요소
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION