Ich versuche eine lokale Datei mit der FileReader readAsArrayBuffer-Eigenschaft zu lesen. Der Lesevorgang ist erfolgreich und im "Onload" -Rückruf sehe ich das Array-Pufferobjekt in reader.result. Aber der Array-Puffer ist nur leer. Die Länge ist eingestellt, aber nicht die Daten. Wie bekomme ich diese Daten?
Hier ist mein Code
%Vor%die Konsolenausgabe für reader.result
%Vor%Kann mir jemand sagen, wie ich diese Daten bekomme? Gibt es ein Sicherheitsproblem? Es gibt keinen Fehler, der onerror wird nicht ausgeführt.
Von Kommentaren: Können Sie mir bitte mitteilen, wie Sie auf die Pufferinhalte zugreifen können? Ich versuche tatsächlich, eine Audio-Datei mit AudioContext
zu spielen ... Dafür würde ich die Pufferdaten benötigen ...
Nun, einen Sound mit AudioContext
zu spielen ist nicht wirklich so schwer.
FileReader
für lokale Dateien, XHR
für entfernte Dateien). Alles in allem, etwa so:
%Vor%Sehen Sie dies live in einer jsfiddle , die für mich in Firefox und Chrome funktioniert.
Ich habe ein console.log(new Uint8Array())
für ein gutes Maß eingefügt, da der Browser normalerweise den Inhalt direkt protokolliert (wenn der Puffer nicht riesig ist).
Für andere Sachen, die Sie mit ArrayBuffer
s machen können, siehe z.B. die entsprechende MDN-Dokumentation .
Hier erfahren Sie, wie Sie den Array-Puffer lesen und in eine binäre Zeichenfolge konvertieren können,
%Vor%Wenn Sie versuchen, ArrayBuffer über console.log zu drucken, erhalten Sie immer ein leeres Objekt {}
Tags und Links javascript arraybuffer audiocontext