在 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转换为string,将string转换为arraybuffer
有没有办法在Android上将arraybuffer从javascript传递到java?