一、Blob
一个Blob
对象就是一个包含有只读原始数据的类文件对象.Blob
对象中的数据并不一定得是JavaScript中的原生形式.File
接口基于Blob
,继承了Blob
的功能,并且扩展支持了用户计算机上的本地文件.
创建Blob
对象的方法有几种,可以调用Blob
构造函数,还可以使用一个已有Blob
对象上的slice()方法
切出另一个Blob
对象,还可以调用canvas
对象上的toBlob
方法.
slice()方法
仍带有前缀:Firefox 12之前的版本上为
blob.mozSlice(),
Safari上为
blob.webkitSlice()
.
BlobBuilder
接口,但并不是所有的浏览器都支持
BlobBuilder
,而且现有的
BlobBuilder
实现都是带前缀的.更主要的是
BlobBuilder已经被废弃,你应该尽可能的使用
Blob
构造函数来代替.
属性
属性名 | 类型 | 描述 |
size | unsigned long long | Blob对象中所包含数据的大小 . 只读. |
type | DOMString | 一个字符串,表明该Blob对象所包含数据的MIME类型 .如果类型未知,则该值为空字符串. 只读. |
构造函数
Blob Blob(
[optional] Array parts,
[optional] BlobPropertyBag properties
);
参数
-
一个数组,包含了将要添加到
Blob对象中的
数据.数组元素可以是任意多个的ArrayBuffer,ArrayBufferView
(typed array),Blob
,或者DOMString
对象. -
一个对象,设置
Blob对象的一些属性
.查看BlobPropertyBag
一节.
parts
properties
BlobPropertyBag
一个包含有两个属性type
和endings
的对象.
-
设置该
Blob对象的
type属性
. -
对应于
BlobBuilder.append()
方法的endings
参数.该参数的值可以是"transparent"或者"native".
type
endings(已废弃)
Blob构造函数用法举例
var aFileParts = ["<a id=\"a\"><b id=\"b\">hey!<\/b><\/a>"];
var oMyBlob = new Blob(aFileParts, { "type" : "text\/xml" }); // the blob
等价于:
var oBuilder = new BlobBuilder();
var aFileParts = ["<a id=\"a\"><b id=\"b\">hey!<\/b><\/a>"];
oBuilder.append(aFileParts[0]);
var oMyBlob = oBuilder.getBlob("text\/xml"); // the blob
BlobBuilder
接口提供了另外一种创建Blob
对象的方式,但该方式现在已经废弃,所以不应该再使用了.
例子:使用类型数组和Blob对象创建一个对象URL
var typedArray = GetTheTypedArraySomehow();
var blob = new Blob([typedArray], {type: "application/octet-binary"}); // 传入一个合适的MIME类型
var url = URL.createObjectURL(blob);
// 会产生一个类似blob:d3958f5c-0777-0845-9dcf-2cb28783acaf这样的URL字符串
// 你可以像使用一个普通URL那样使用它,比如用在img.src上.
文章来源:https://developer.mozilla.org/zh-CN/docs/Web/API/Blob#BlobPropertyBag
二、ArrayBuffer
概述
ArrayBuffer
(缓冲数组)是一种用于呈现通用、固定长度的二进制数据的类型。不能直接构造并填充 ArrayBuffer 的内容,而应该先创建一个
ArrayBufferView
对象,该对象用具体的格式来呈现 ArrayBuffer 的内容,你可以使用此对象来读写 ArrayBuffer 的内容。
方法概要
ArrayBuffer ArrayBuffer(unsigned long length); |
属性
属性 | 类型 | 描述 |
byteLength | unsigned long | 此数组的大小(以 bytes 作为单位)当数组被创建时,此属性的值就确定了。只读。 |
方法
ArrayBuffer()
构造方法接收一个数字参数,作为新数组的长度,返回新创建的 ArrayBuffer
对象。
ArrayBuffer ArrayBuffer(
unsigned long length
);
参数
-
length
- 要创建的数组的大小。
返回值
新创建的 ArrayBuffer 对象,该对象具有 length 的大小,所有位置均被初始化为 0。
文章来源:https://developer.mozilla.org/zh-CN/docs/Web/API/ArrayBuffer
三、Uint8Array
Type | Size | Description | Equivalent C type |
Int8Array | 1 | 8-bit twos complement signed integer | signed char |
Uint8Array | 1 | 8-bit unsigned integer | unsigned char |
Int16Array | 2 | 16-bit twos complement signed integer | short |
Uint16Array | 2 | 16-bit unsigned integer | unsigned short |
Int32Array | 4 | 32-bit twos complement signed integer | int |
Uint32Array | 4 | 32-bit unsigned integer | unsigned int |
Float32Array | 4 | 32-bit IEEE floating point number | float |
Float64Array | 8 | 64-bit IEEE floating point number | double |
Uint8Array Uint8Array(
ArrayBuffer buffer,
optional unsigned long byteOffset,
optional unsigned long length
);
Getting an Uint8Array
from existing data(From an ArrayBuffer)
var myArray = new Uint8Array(myArrayBuffer);
https://developer.mozilla.org/en-US/docs/Web/API/Uint8Array