ArrayBuffer和Blob有什么区别?

时间:2012-08-05 23:49:00

标签: javascript html5

我正在阅读http://www.html5rocks.com/en/tutorials/file/xhr2/并尝试找出ArrayBuffer和Blob之间的区别。

两个容器都不是由比特组成的吗?因此,不能以多种方式查看两个容器(如32位块,16位块等)?

2 个答案:

答案 0 :(得分:27)

<强>摘要

除非您需要能够编写/编辑(使用ArrayBuffer),否则Blob格式可能是最佳格式。

<强>详细

我从different html5rocks page.发现了这个问题,我发现@Bart van Heukelom's comments有帮助,所以我想在这里提升答案。

我还发现查找特定于ArrayBufferBlob对象的资源很有帮助。我强调重申我正在寻找的有用细节。总结:尽管强调Blob是“原始数据”,但非常可行

与我想强调的文档的区别:

以下是帮助我的文档详细信息:

Here is ArrayBuffer

  

ArrayBuffer对象用于表示通用的固定长度   原始二进制数据缓冲区你不能直接操纵内容   一个ArrayBuffer;相反,您创建一个类型化的数组对象或   一个DataView对象,它表示特定格式的缓冲区,   并且使用它来读取和写入缓冲区的内容。

Here is Blob

  

Blob对象表示不可变原始数据的类文件对象。   Blob表示不一定是JavaScript本机的数据   格式。文件界面基于Blob,继承blob   功能并将其扩展为支持用户系统上的文件。

答案 1 :(得分:16)

在页面上对此进行了解释。

ArrayBuffer

  

ArrayBuffer是二进制数据的通用固定长度容器。如果您需要原始数据的通用缓冲区,它们非常方便,但这些人背后的真正力量是您可以使用JavaScript类型数组创建基础数据的“视图”。实际上,可以从单个ArrayBuffer源创建多个视图。例如,您可以创建一个8位整数数组,该数组与来自相同数据的现有32位整数数组共享相同的ArrayBuffer。基础数据保持不变,我们只是创建它的不同表示。

BLOB

  

如果您想直接使用Blob和/或不需要操作任何文件的字节,请使用xhr.responseType ='blob':