在 javascript ArrayBuffer 中访问 Uint8Array

Posted

技术标签:

【中文标题】在 javascript ArrayBuffer 中访问 Uint8Array【英文标题】:Access Uint8Array in javascript ArrayBuffer 【发布时间】:2018-09-27 20:59:22 【问题描述】:

我有一个从 jpeg 文件的 FileReader ReadAsArrayBuffer 方法生成的 javascript ArrayBuffer。

我正在尝试访问 ArrayBuffer 的 UInt32 数组并发送到 WCF 服务(最终插入到服务器上的数据库中)。

我在 *** (byte array method) 上看到了一个示例,其中 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 字节数组——无法读取它

谢谢

皮特

【问题讨论】:

【参考方案1】:

Those properties do not actually exist on the ArrayBuffer object。它们被 Dev Tools 窗口放在那里,用于查看 ArrayBuffer 的内容。

您需要通过 constructor syntax 实际创建您选择的 TypedArray

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

所以在你的情况下,如果你想要Uint8Array,你需要这样做:

var uint8View = new Uint8Array(arrayBuffer);

【讨论】:

谢谢。现在我必须让 WCF 服务读取/接受 UIntArray 得到错误参数类型'string | ArrayBuffer' 不能分配给 'ArrayBuffer | 类型的参数ArrayLike |共享数组缓冲区'。类型 'string' 不可分配给类型 'ArrayBuffer | ArrayLike | SharedArrayBuffer'.ts(2769)

以上是关于在 javascript ArrayBuffer 中访问 Uint8Array的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中的ArrayBuffer该如何理解呢?

JavaScript之ArrayBuffer

javascript 将arraybuffer转换为string,将string转换为arraybuffer

有没有办法在Android上将arraybuffer从javascript传递到java?

通过 JavaScript XHR2 对象在 PHP 中发送 ArrayBuffer

在 javascript ArrayBuffer 中访问 Uint8Array