File API


紹介する


安全のため、ブラウザはファイルのみを読み込むことができます.
デフォルトでは、<input type="file" />でファイルが受信されます.

1.ファイルとFileList

<input type="file" multiple class="input-files" />

<script>
  document.querySelector(".input-files").addEventListener("change", e => {
    console.log(e.target.files);	// FileList를 반환한다.
    // FileList는 유사배열이며, 각 인덱스마다 File객체를 가지고 있다
    // File객체에는 사용자가 input으로부터 넣은 파일에 대한 정보를 가지고 있다.
  });
</script>

2. FileReader

Fileは、指定された形式でオブジェクトを読み込むために使用されます.
  • readAsText:純テキストで読み取る(.txt)
  • readAsDataURL:base 64に符号化...画像処理(.jpg)
  • readAsArrayBuffer:ArrayBuffer戻りオブジェクト(.mp4)
  • readAsBinaryString:バイナリ読み出し
  • 2.1例readAsText(テキストファイルを読み込む)

    <body>
      <input type="file" accept="*/*" class="input-text-file" />
    
      <textarea class="t-a" cols="30" rows="10"></textarea>
      <div class="preview" />
    
      <script>
        document.querySelector(".input-text-file").addEventListener("change", e => {
          // 파일리더생성
          const textFileReader = new FileReader();
    
          // 파일처리를 성공했을 때 실행할 이벤트 등록
          textFileReader.onload = (event) => {
            document.querySelector(".t-a").innerHTML = event.target.result;
          }
    
          // 파일을 텍스트형태로 읽음
          // e.target.files는 FileList로 input으로 받은 파일은 File이 들어가 있음
          textFileReader.readAsText(e.target.files[0]);
        });
      </script>
    </body>

    2.2 readAsData URL例(画像ファイルの読み込み)

    <body>
      <input type="file" accept="image/*" class="input-image-file" />
    
      <div class="preview" />
    
      <script>
        document.querySelector(".input-image-file").addEventListener("change", e => {
          // 파일리더생성
          const textFileReader = new FileReader();
    
          // 파일처리를 성공했을 때 실행할 이벤트 등록
          textFileReader.onload = (event) => {
            document.querySelector(".preview").style = `background-image: url("${event.target.result}")`;
    
            console.log(event.target.result);
            console.log(event);
          }
    
          // 파일을 base64형태로 
          textFileReader.readAsDataURL(e.target.files[0]);
        });
      </script>
    </body>

    リファレンスサイト

  • ゼロ秒
  • ファイルAPIクリーンアップサイト