Suche…


Syntax

  • reader = new FileReader ();

Parameter

Eigenschaft / Methode Beschreibung
error Fehler beim Lesen der Datei.
readyState Enthält den aktuellen Status des FileReader.
result Enthält den Inhalt der Datei.
onabort Wird ausgelöst, wenn der Vorgang abgebrochen wird.
onerror Wird ausgelöst, wenn ein Fehler auftritt.
onload Wird ausgelöst, wenn die Datei geladen wurde.
onloadstart Wird ausgelöst, wenn der Dateiladevorgang gestartet wurde.
onloadend Wird ausgelöst, wenn der Dateiladevorgang beendet ist.
onprogress Wird ausgelöst, während ein Blob gelesen wird.
abort() Bricht den aktuellen Vorgang ab.
readAsArrayBuffer(blob) Startet das Lesen der Datei als ArrayBuffer.
readAsDataURL(blob) Startet das Lesen der Datei als Daten-URL / URI.
readAsText(blob[, encoding]) Startet das Lesen der Datei als Textdatei. Binärdateien können nicht gelesen werden. Verwenden Sie stattdessen readAsArrayBuffer.

Bemerkungen

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

Datei als String lesen

Stellen Sie sicher, dass auf Ihrer Seite eine Datei eingegeben wird:

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

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

Datei als dataURL lesen

Das Lesen des Inhalts einer Datei innerhalb einer Webanwendung kann mithilfe der HTML5-Datei-API durchgeführt werden. Fügen Sie zunächst eine Eingabe mit type="file" in Ihren HTML-Code ein:

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

Als Nächstes fügen wir einen Änderungslistener für die Dateieingabe hinzu. In diesem Beispiel wird der Listener über JavaScript definiert. Er kann jedoch auch als Attribut für das Eingabeelement hinzugefügt werden. Dieser Listener wird jedes Mal ausgelöst, wenn eine neue Datei ausgewählt wurde. In diesem Rückruf können wir die ausgewählte Datei lesen und weitere Aktionen ausführen (z. B. ein Bild mit dem Inhalt der ausgewählten Datei erstellen):

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

Schneiden Sie eine Datei

Die blob.slice() -Methode wird zum Erstellen eines neuen Blob-Objekts verwendet, das die Daten im angegebenen Bytebereich des Quell-Blob enthält. Diese Methode kann auch mit File-Instanzen verwendet werden, da File Blob erweitert.

Hier schneiden wir eine Datei in eine bestimmte Anzahl von Blobs. Dies ist vor allem in Fällen nützlich, in denen Sie Dateien verarbeiten müssen, die zu groß sind, um in einen Arbeitsspeicher eingelesen zu werden. Wir können die Chunks dann mit 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;
}

Client-seitiger CSV-Download mit 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);

Quellenreferenz; https://github.com/mholt/PapaParse/issues/175

Mehrere Dateien auswählen und Dateitypen einschränken

Mit der HTML5-Datei-API können Sie einschränken, welche Art von Dateien akzeptiert werden, indem Sie einfach das Accept-Attribut für eine Dateieingabe festlegen, z.

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

Wenn Sie mehrere MIME-Typen angeben, die durch ein Komma getrennt sind (z. B. image/jpeg,image/png ) oder Platzhalter verwenden (z. B. image/* um alle Arten von Bildern zuzulassen), können Sie den Dateityp, den Sie auswählen möchten, schnell und effektiv einschränken . Hier ist ein Beispiel für das Zulassen von Bildern oder Videos:

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

Standardmäßig erlaubt die Dateieingabe dem Benutzer, eine einzelne Datei auszuwählen. Wenn Sie die Auswahl mehrerer Dateien aktivieren möchten, fügen Sie einfach das multiple Attribut hinzu:

<input type="file" multiple>

Sie können dann alle ausgewählten Dateien über die Datei - Eingang des lesen files Array. Siehe gelesene Datei als dataUrl

Rufen Sie die Eigenschaften der Datei ab

Wenn Sie die Eigenschaften der Datei (wie Name oder Größe) abrufen möchten, können Sie dies vor der Verwendung des File Readers tun. Wenn wir den folgenden HTML-Code haben:

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

Sie können auf die Eigenschaften direkt wie folgt zugreifen:

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

Sie können auch leicht die folgenden Attribute erhalten: lastModified ( lastModified ), lastModifiedDate (Date) und type ( lastModifiedDate )



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow