javascript readAsArrayBuffer gibt einen leeren Array Buffer zurück

8

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 ...

    
Anand N 05.06.2014, 10:00
quelle

2 Antworten

4

Nun, einen Sound mit AudioContext zu spielen ist nicht wirklich so schwer.

  1. Richten Sie den Kontext ein.
  2. Laden Sie alle Daten in den Puffer (z. B. FileReader für lokale Dateien, XHR für entfernte Dateien).
  3. Richten Sie eine neue Quelle ein und starten Sie sie.

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 .

    
nmaier 06.06.2014, 07:33
quelle
7

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 {}

    
Rohit Singh Sengar 03.09.2014 19:40
quelle