Ricerca…


Sintassi

  • reader = new FileReader ();

Parametri

Proprietà / Metodo Descrizione
error Un errore che si è verificato durante la lettura del file.
readyState Contiene lo stato corrente di FileReader.
result Contiene il contenuto del file.
onabort Attivato quando l'operazione viene interrotta.
onerror Attivato quando si verifica un errore.
onload Attivato quando il file è stato caricato.
onloadstart Attivato quando l'operazione di caricamento del file è iniziata.
onloadend Attivato quando l'operazione di caricamento del file è terminata.
onprogress Attivato durante la lettura di un Blob.
abort() Interrompe l'operazione corrente.
readAsArrayBuffer(blob) Inizia a leggere il file come ArrayBuffer.
readAsDataURL(blob) Inizia a leggere il file come url di dati / uri.
readAsText(blob[, encoding]) Inizia la lettura del file come file di testo. Non è in grado di leggere i file binari. Utilizzare invece readAsArrayBuffer.

Osservazioni

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

Leggi il file come stringa

Assicurati di avere un file in ingresso sulla tua pagina:

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

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

Leggi il file come dataURL

La lettura del contenuto di un file in un'applicazione Web può essere realizzata utilizzando l'API del file HTML5. Innanzitutto, aggiungi un input con type="file" nel tuo codice HTML:

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

Successivamente, aggiungeremo un listener di modifiche all'input del file. Questo esempio definisce l'ascoltatore tramite JavaScript, ma potrebbe anche essere aggiunto come attributo sull'elemento di input. Questo listener viene attivato ogni volta che viene selezionato un nuovo file. All'interno di questo callback, possiamo leggere il file che è stato selezionato ed eseguire ulteriori azioni (come la creazione di un'immagine con il contenuto del file selezionato):

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

Taglia un file

Il metodo blob.slice() viene utilizzato per creare un nuovo oggetto Blob contenente i dati nell'intervallo di byte specificato del BLOB di origine. Questo metodo è utilizzabile anche con le istanze di file, poiché File estende Blob.

Qui suddividiamo un file in una quantità specifica di BLOB. Questo è utile soprattutto nei casi in cui è necessario elaborare file troppo grandi per essere letti in memoria tutti in una volta. Possiamo quindi leggere i blocchi uno per uno utilizzando 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;
}

Download csv lato client tramite 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);

Fonte di riferimento; https://github.com/mholt/PapaParse/issues/175

Selezione di più file e limitazione dei tipi di file

L'API del file HTML5 ti consente di limitare il tipo di file accettati semplicemente impostando l'attributo accept su un file input, ad esempio:

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

Specificare più tipi MIME separati da una virgola (ad esempio image/jpeg,image/png ) o utilizzare caratteri jolly (ad esempio image/* per consentire tutti i tipi di immagini) offre un modo rapido e potente per limitare il tipo di file che si desidera selezionare . Ecco un esempio per consentire qualsiasi immagine o video:

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

Per impostazione predefinita, l'input del file consente all'utente di selezionare un singolo file. Se vuoi abilitare la selezione di file multipli, aggiungi semplicemente l'attributo multiple :

<input type="file" multiple>

È quindi possibile leggere tutti i file selezionati tramite l'array di files di input del files . Vedi file di lettura come dataUrl

Ottieni le proprietà del file

Se si desidera ottenere le proprietà del file (come il nome o la dimensione), è possibile farlo prima di utilizzare il Lettore file. Se abbiamo la seguente parte di codice html:

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

Puoi accedere direttamente alle proprietà in questo modo:

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

Puoi anche ottenere facilmente i seguenti attributi: lastModified (Timestamp), lastModifiedDate (Date) e type (File Type)



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow