수색…


통사론

  • 독자 = 새로운 FileReader ();

매개 변수

속성 / 메서드 기술
error 파일을 읽는 동안 오류가 발생했습니다.
readyState FileReader의 현재 상태를 포함합니다.
result 파일 내용을 포함합니다.
onabort 작업이 중단되면 트리거됩니다.
onerror 오류가 발생하면 트리거됩니다.
onload 파일이로드되면 트리거됩니다.
onloadstart 파일로드 작업이 시작되면 트리거됩니다.
onloadend 파일 로딩 작업이 끝나면 트리거됩니다.
onprogress BLOB를 읽는 동안 트리거됩니다.
abort() 현재 작업을 중단합니다.
readAsArrayBuffer(blob) 파일을 ArrayBuffer로서 읽어 내기 시작합니다.
readAsDataURL(blob) 데이터 url / uri로 파일 읽기를 시작합니다.
readAsText(blob[, encoding]) 파일을 텍스트 파일로 읽기 시작합니다. 바이너리 파일을 읽을 수 없습니다. 대신에 readAsArrayBuffer를 사용하십시오.

비고

https://www.w3.org/TR/FileAPI/

문자열로 파일 읽기

페이지에 파일 입력이 있는지 확인하십시오.

<input type="file" id="upload">

자바 스크립트 :

document.getElementById('upload').addEventListener('change', readFileAsString)
function readFileAsString() {
    var files = this.files;
    if (files.length === 0) {
        console.log('No file is selected');
        return;
    }

    var reader = new FileReader();
    reader.onload = function(event) {
        console.log('File content:', event.target.result);
    };
    reader.readAsText(files[0]);
}

dataURL 파일 읽기

HTML5 File API를 사용하여 웹 애플리케이션 내에서 파일의 내용을 읽을 수 있습니다. 먼저 type="file" 인 입력을 HTML에 추가합니다.

<input type="file" id="upload">

다음으로 파일 입력에 변경 리스너를 추가 할 것입니다. 이 예제는 JavaScript를 통해 리스너를 정의하지만 입력 요소에 속성으로 추가 될 수도 있습니다. 이 리스너는 새 파일을 선택할 때마다 트리거됩니다. 이 콜백 내에서 선택한 파일을 읽고 선택한 파일의 내용으로 이미지를 만드는 등의 추가 작업을 수행 할 수 있습니다.

document.getElementById('upload').addEventListener('change', showImage);

function showImage(evt) {
    var files = evt.target.files;

    if (files.length === 0) {
        console.log('No files selected');
        return;
    }

    var reader = new FileReader();
    reader.onload = function(event) {
        var img = new Image();
        img.onload = function() {
            document.body.appendChild(img);
        };
        img.src = event.target.result;
    };
    reader.readAsDataURL(files[0]);
}

파일 분할

blob.slice() 메서드는 소스 Blob의 지정된 바이트 범위에있는 데이터를 포함하는 새 Blob 객체를 만드는 데 사용됩니다. 이 메소드는 File이 Blob을 확장하므로 File 인스턴스에도 사용할 수 있습니다.

여기서 우리는 특정한 양의 얼룩으로 파일을 조각 낸다. 특히 메모리에서 너무 큰 파일을 한꺼번에 처리해야하는 경우에 유용합니다. 그런 다음 FileReader 사용하여 청크를 하나씩 읽을 수 있습니다.

/**
* @param {File|Blob} - file to slice
* @param {Number} - chunksAmount
* @return {Array} - an array of Blobs
**/
function sliceFile(file, chunksAmount) {
  var byteIndex = 0;
  var chunks = [];
    
  for (var i = 0; i < chunksAmount; i += 1) {
    var byteEnd = Math.ceil((file.size / chunksAmount) * (i + 1));
    chunks.push(file.slice(byteIndex, byteEnd));
    byteIndex += (byteEnd - byteIndex);
  }

  return chunks;
}

Blob을 사용하여 클라이언트 측 csv 다운로드

function downloadCsv() {
  var blob = new Blob([csvString]);
  if (window.navigator.msSaveOrOpenBlob){
    window.navigator.msSaveBlob(blob, "filename.csv");
  }
  else {
    var a = window.document.createElement("a");

    a.href = window.URL.createObjectURL(blob, {
      type: "text/plain"
    });
    a.download = "filename.csv";
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
  }
}
var string = "a1,a2,a3";
downloadCSV(string);

소스 참조; https://github.com/mholt/PapaParse/issues/175

여러 파일 선택 및 파일 형식 제한

HTML5 파일 API를 사용하면 파일 입력에 accept 속성을 설정하여 허용 할 파일의 종류를 제한 할 수 있습니다 (예 :

<input type="file" accept="image/jpeg">

쉼표 (예 : image/jpeg,image/png ) 또는 와일드 카드 (예 : 모든 유형의 이미지 허용을 위해 image/* )로 구분 된 여러 MIME 유형을 지정하면 선택하려는 파일 유형을 빠르고 강력하게 제한 할 수 있습니다 . 이미지 또는 동영상을 허용하는 예는 다음과 같습니다.

<input type="file" accept="image/*,video*">

기본적으로 파일 입력을 통해 사용자는 하나의 파일을 선택할 수 있습니다. 여러 파일 선택을 사용하려면 multiple 속성을 추가하십시오.

<input type="file" multiple>

그런 다음 파일 입력의 files 배열을 통해 선택한 모든 파일을 읽을 수 있습니다. 읽기 파일을 dataUrl로보기

파일의 속성 가져 오기

파일의 속성 (이름 또는 크기와 같은)을 얻으려면 파일 판독기를 사용하기 전에 수행 할 수 있습니다. 다음 html 코드가있는 경우 :

<input type="file" id="newFile">

다음과 같이 속성에 직접 액세스 할 수 있습니다.

document.getElementById('newFile').addEventListener('change', getFile);

function getFile(event) {
    var files = event.target.files
        , file = files[0];

    console.log('Name of the file', file.name);
    console.log('Size of the file', file.size);
}

lastModified (Timestamp), lastModifiedDate (Date) 및 type (File Type) 속성을 쉽게 가져올 수도 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow