简介
- Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream 来用于数据操作。
内容
构造函数
- var aBlob = new Blob( array, options );
- DOMStrings会被编码为UTF-8。
- options:
- type,默认值为 “”,它代表了将会被放入到blob中的数组内容的MIME类型
- endings,默认值为"transparent",用于指定包含行结束符\n的字符串如何被写入。
- “native”,代表行结束符会被更改为适合宿主操作系统文件系统的换行符,或者
- “transparent”,代表会保持blob中保存的结束符不变
属性
Blob.size
Blob.type
- 只读 一个字符串,表明该 Blob 对象所包含数据的 MIME 类型。如果类型未知,则该值为空字符串。
方法
Blob.slice([start[, end[, contentType]]])
- 返回一个新的 Blob 对象,包含了源 Blob 对象中指定范围内的数据。
- start 可选
这个参数代表 Blob 里的下标,表示第一个会被会被拷贝进新的 Blob 的字节的起始位置。如果你传入的是一个负数,那么这个偏移量将会从数据的末尾从后到前开始计算。举例来说, -10 将会是 Blob 的倒数第十个字节。它的默认值是0, 如果你传入的start的长度大于源 Blob 的长度,那么返回的将会是一个长度为0并且不包含任何数据的一个 Blob 对象。 - end 可选
这个参数代表的是 Blob 的一个下标,这个下标-1的对应的字节将会是被拷贝进新的Blob 的最后一个字节。如果你传入了一个负数,那么这个偏移量将会从数据的末尾从后到前开始计算。举例来说, -10 将会是 Blob 的倒数第十个字节。它的默认值就是它的原始长度(size). - contentType 可选
给新的 Blob 赋予一个新的文档类型。这将会把它的 type 属性设为被传入的值。它的默认值是一个空的字符串。
Blob.stream()
Blob.text()
- 返回一个promise且包含blob所有内容的UTF-8格式的 USVString。
- 在JavaScript中返回时, USVString 映射到 String 。
Blob.arrayBuffer()
- 返回一个promise且包含blob所有内容的二进制格式的 ArrayBuffer
从 Blob 中提取数据
使用 FileReader。以下代码将 Blob 的内容作为类型数组读取:
var reader = new FileReader();
reader.addEventListener("loadend", function() {
});
reader.readAsArrayBuffer(blob);
注意
- 要从其他非blob对象和数据构造一个 Blob,请使用 Blob() 构造函数。
- 要创建一个 blob 数据的子集 blob,请使用 slice() 方法。
- 要获取用户文件系统上的文件对应的 Blob 对象,请参阅 File 文档。
- slice() 方法在某些浏览器和版本上带有浏览器引擎前缀:比如 Firefox 12 及更早版本的blob.mozSlice() 和 Safari 中的blob.webkitSlice()。 没有浏览器引擎前缀的老版本 slice() 方法有不同的语义,并且已过时。Firefox 30 取消了对 blob.mozSlice() 的支持。
- slice() 方法原本接受 length 作为第二个参数,以表示复制到新 Blob 对象的字节数。如果设置的参数使 start + length 超出了源 Blob 对象的大小,则返回从开始到结尾的所有数据。