JavaScript - 如何从ArrayBuffer中获取数据?

10

我有一个使用 readAsArrayBuffer() 的拖放脚本。缓冲区的长度很好,但是我似乎无法弄清如何从缓冲区中提取数据。

显然,我需要创建一个 DataView 或者一个 Uint8Array 之类的东西,然后遍历其 byteLength...... 求助!

编辑 相关代码(代码不多):

var reader = new FileReader();
reader.onload = function(e) {
    // do something with e.target.result, which is an ArrayBuffer
} 
reader.readAsArrayBuffer(someFileHandle);

我们可能需要更多的代码来完成这个。你正在使用 FileReader 吗?或者是什么提供了 readAsArrayBuffer() - haylem
1个回答

3

根据您对我的评论的回答,可能会有所改变,但如果我假设您在某处使用了FileReader,那么您需要在提供的loaded回调函数中读取其result属性:

function loaded(evt) {  
  var datastring = evt.target.result;

  // do something here
}

reader.onload = loaded; // where reader is a FileReader, FileReaderSync 

更新:啊,我明白了。那么你最好的做法是遵循这个重复问题:

在字符串和ArrayBuffer之间进行转换

更新2:请注意,您可能可以使用readAsText(),但我不知道您是否有权这样做。


1
是的,谢谢你,但是.result属性的类型是ArrayBuffer。我该如何从中提取数据? - Ben
@Steve:你所说的“提取”是什么意思?你想要做什么,具体点? - haylem
假设文件包含一个字符串:foobarbaz。我想要像 alert(datastring) 这样的代码能够弹出 foobarbaz。但现在,弹窗上显示的是 [object ArrayBuffer] - Ben
@Steve:我更新了我的回答,指向另一个提供你所需内容的线程。 - haylem
谢谢Haylem。就是那个。嗯。 - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接