Sto provando a leggere un file locale utilizzando la proprietà ReadAsArrayBuffer di FileReader. La lettura è riuscita e nel callback "onload", vedo l'oggetto Array Buffer in reader.result. Ma l'Array Buffer è solo vuoto. La lunghezza è impostata, ma non i dati. Come ottengo questi dati?javascript readAsArrayBuffer restituisce il buffer di array vuoto
Ecco il mio codice
<!DOCTYPE html>
<html>
<body>
<input type="file" id="file" />
</body>
<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
var selFile = files[0];
var reader = new FileReader();
reader.onload = function(e) {
console.log(e.target.result);
};
reader.onerror = function(e) {
console.log(e);
};
reader.readAsArrayBuffer(selFile);
}
document.getElementById('file').addEventListener('change', handleFileSelect, false);
</script>
</html>
l'output su console per reader.result
e.target.result
ArrayBuffer {}
e.target.result.byteLength
25312
Qualcuno può dirmi come ottenere questi dati? c'è qualche problema di sicurezza? Non c'è nessun errore, l'onerror non viene eseguito.
Dai commenti: Per favore fatemi sapere come accedere al contenuto del buffer? In realtà sto provando a riprodurre un file audio usando AudioContext
... Per quello avrei bisogno dei dati del buffer ...
Perché pensi che la il buffer è vuoto? Il tuo codice in realtà non accede/ispeziona il contenuto del buffer. Forse sei confuso dall'output di 'console.log'? 'console.log()' non stamperà il contenuto del buffer. – nmaier
Grazie nmaier, ho pensato lo stesso ... ma non so come accedere al contenuto del buffer ... Per favore, fammi sapere come accedere al contenuto del buffer? In realtà sto provando a riprodurre un file audio utilizzando AudioContext ... Per questo avrei bisogno dei dati del buffer ... Molte grazie per il tuo aiuto –
Stai utilizzando l'evento onload invece dell'evento onloadend. Il codice funzionerà se si sostituisce l'evento onload da onloadend. Vedi: https://developer.mozilla.org/en-US/docs/Web/API/FileReader – seb