Próbuję odczytać plik lokalny za pomocą właściwości FileReader readAsArrayBuffer. Odczyt jest sukcesem iw wywołaniu zwrotnym "onload" widzę obiekt bufora tablicowego w read.result. Ale bufor macierzy jest pusty. Długość jest ustawiona, ale nie dane. Jak mogę uzyskać te dane?javascript readAsArrayBuffer zwraca pusty bufor Array
Oto mój kod
<!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>
wyjście konsoli reader.result
e.target.result
ArrayBuffer {}
e.target.result.byteLength
25312
Czy ktoś może mi powiedzieć jak uzyskać te dane? Czy jest jakiś problem z bezpieczeństwem? Nie ma błędu, onerror nie jest wykonywany.
Od komentarzy: Czy możesz dać mi znać, jak uzyskać dostęp do zawartości bufora? Próbuję odtworzyć plik dźwiękowy za pomocą AudioContext
... Do tego potrzebowałbym danych bufora ...
Dlaczego myślisz bufor jest pusty? Twój kod w rzeczywistości nie ma dostępu do zawartości bufora ani jej nie sprawdza. Może jesteś zdezorientowany przez wyjście 'console.log'? 'console.log()' nie wypisze zawartości bufora. – nmaier
Dzięki Nmaier, myślałem tak samo ... ale nie wiem jak uzyskać dostęp do zawartości bufora ... Czy możesz dać mi znać, jak uzyskać dostęp do zawartości bufora? Próbuję odtworzyć plik audio przy użyciu AudioContext ... Do tego potrzebowałabym bufora danych ... Wielkie dzięki za pomoc –
Używasz zdarzenia onload zamiast zdarzenia onloadend. Twój kod zadziała, jeśli zastąpisz zdarzenie onloadend. Zobacz: https://developer.mozilla.org/en-US/docs/Web/API/FileReader – seb