Szukaj…


Składnia

  • reader = new FileReader ();

Parametry

Właściwość / metoda Opis
error Błąd, który wystąpił podczas odczytu pliku.
readyState Zawiera bieżący stan FileReadera.
result Zawiera zawartość pliku.
onabort Wywoływane, gdy operacja zostanie przerwana.
onerror Wyzwalane po napotkaniu błędu.
onload Wyzwalane po załadowaniu pliku.
onloadstart Wyzwalane po rozpoczęciu operacji ładowania pliku.
onloadend Wyzwalane po zakończeniu operacji ładowania pliku.
onprogress Uruchomiono podczas czytania obiektu Blob.
abort() Przerywa bieżącą operację.
readAsArrayBuffer(blob) Zaczyna czytać plik jako ArrayBuffer.
readAsDataURL(blob) Zaczyna czytać plik jako adres URL / URI danych.
readAsText(blob[, encoding]) Rozpoczyna czytanie pliku jako pliku tekstowego. Nie można odczytać plików binarnych. Zamiast tego użyj readAsArrayBuffer.

Uwagi

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

Odczytaj plik jako ciąg

Upewnij się, że na stronie znajduje się plik wejściowy:

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

Następnie w JavaScript:

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]);
}

Odczytaj plik jako dataURL

Odczyt zawartości pliku w aplikacji internetowej można osiągnąć, korzystając z interfejsu API plików HTML5. Najpierw dodaj dane wejściowe z type="file" w swoim HTML:

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

Następnie dodamy detektor zmian na wejściu pliku. Ten przykład definiuje nasłuchiwanie przez JavaScript, ale można go również dodać jako atrybut elementu wejściowego. Ten detektor jest uruchamiany za każdym razem, gdy wybierany jest nowy plik. W ramach tego wywołania zwrotnego możemy odczytać wybrany plik i wykonać dalsze działania (takie jak utworzenie obrazu z zawartością wybranego pliku):

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]);
}

Pokrój plik

Metoda blob.slice() służy do utworzenia nowego obiektu Blob zawierającego dane w określonym zakresie bajtów źródłowego obiektu Blob. Ta metoda jest również dostępna w przypadku instancji plików, ponieważ plik rozszerza obiekt Blob.

Tutaj kroimy plik na określoną liczbę obiektów blob. Jest to przydatne szczególnie w przypadkach, gdy trzeba przetworzyć pliki, które są zbyt duże, aby odczytać je w pamięci za jednym razem. Następnie możemy czytać fragmenty jeden po drugim za pomocą 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;
}

Pobieranie csv po stronie klienta przy użyciu obiektu Blob

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);

Źródło odniesienia; https://github.com/mholt/PapaParse/issues/175

Wybieranie wielu plików i ograniczanie typów plików

Interfejs API plików HTML5 pozwala ci ograniczyć rodzaj plików, które są akceptowane, po prostu ustawiając atrybut accept na wejściu pliku, np .:

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

Określanie wielu typów MIME oddzielonych przecinkiem (np. image/jpeg,image/png ) lub używanie symboli wieloznacznych (np. image/* do zezwalania na wszystkie typy obrazów) daje szybki i skuteczny sposób na ograniczenie typu plików, które chcesz wybrać . Oto przykład dopuszczenia dowolnego obrazu lub wideo:

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

Domyślnie wejście pliku pozwala użytkownikowi wybrać pojedynczy plik. Jeśli chcesz włączyć zaznaczanie wielu plików, po prostu dodaj atrybut multiple :

<input type="file" multiple>

Następnie możesz odczytać wszystkie wybrane pliki za pomocą tablicy plików wejściowych files . Zobacz odczytany plik jako dataUrl

Uzyskaj właściwości pliku

Jeśli chcesz uzyskać właściwości pliku (takie jak nazwa lub rozmiar), możesz to zrobić przed użyciem Czytnika plików. Jeśli mamy następujący fragment kodu HTML:

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

Możesz uzyskać dostęp do właściwości bezpośrednio w ten sposób:

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);
}

Można również łatwo uzyskać następujące atrybuty: lastModified (znacznik czasu), lastModifiedDate (data) i type ( type pliku)



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow