web-dev-qa-db-ja.com

javascript ArrayBufferでUint8Arrayにアクセスする

JpegファイルのFileReader ReadAsArrayBufferメソッドから生成されたjavascript ArrayBufferがあります。

ArrayBufferのUInt32配列にアクセスしてWCFサービスに送信しようとしています(最終的にはサーバー上のデータベースに挿入されます)。

StackOverflow( バイト配列メソッド )で、UnInt32配列がバイト配列に変換され、うまくいくと思われる例をここで見ました。

以下のarrayBuffer変数の[[Uint8Array]]にアクセスして、WCFに送信できるようにしようとしていますが、あまりうまくいきません。私はもう試した:

   var arrayBuffer = reader.result[[Uint8Array]];//nope
     var arrayBuffer = reader.result[Uint8Array];//nope
     var arrayBuffer = reader.result.Uint8Array;//nope
     var arrayBuffer = reader.result[1];//nope

その[[Uint8Array]]にアクセスする方法についてのアイデアはいただければ幸いです。 ArrayBuffer全体がWCFサービスに送信されると、0バイトの配列が表示されます-読み取ることができません

ありがとう

ピート

enter image description here

4
pvitt

これらのプロパティは実際にはArrayBufferオブジェクトに存在しません 。それらは、ArrayBufferの内容を表示するためのDev Toolsウィンドウによってそこに配置されます。

コンストラクタ構文 を使用して、選択したTypedArrayを実際に作成する必要があります

new TypedArray(buffer [, byteOffset [, length]]);

だからあなたの場合あなたが望むならUint8Arrayする必要があります:

var uint8View = new Uint8Array(arrayBuffer);
17
Patrick Evans