简介
Blob(Binary Large Object)是对数据块的引用或句柄,通过 Blob 表示二进制数据、文本文件,进而可以对其进行一些操作。
Blob 语法
创建
语法
1 | var aBlob = new Blob( array[, options ]); |
- 参数
array
是一个由ArrayBuffer
,ArrayBufferView
,Blob
,DOMString
等对象构成的Array
,或者其他类似对象的混合体,它将会被放进Blob
。DOMStrings会被编码为UTF-8。options
它可能会指定如下两个属性:type
,默认值为""
,表示 array 参数中数据的 MIME 类型。endings
,用于指定包含行结束符\n
的字符串如何被写入"transparent"
,默认值,表示保持 Blob 中的结束符-
"native"
,表示行结束符会被更改为适合宿主操作系统文件系统的换行符
- 返回值
- Blob 对象
示例
1 | var aFileParts = ['<a id="a"><b id="b">hey!</b></a>']; // 一个包含DOMString的数组 |
属性
Blob.size
Blob.size 为只读,返回 Blob
对象中所包含数据的大小(字节)。
1 | // fileInput是一个HTMLInputElement元素: <input type="file" multiple id="myfileinput"> |
Blob.type
Blob.type 为只读,返回一个字符串,表明该 Blob
对象所包含数据的 MIME 类型。如果类型未知,则该值为空字符串。
1 | // fileInput是一个 HTMLInputElement,HTML Input 元素: <input type="file" multiple id="myfileinput"> |
方法
Blob.slice
1 | Blob.slice([start[, end[, contentType]]) |
参数
返回值
- 返回一个新的
Blob
对象,包含了源Blob
对象中指定范围内的数据。
- 返回一个新的
Blob.stream
1 | Blob.stream() |
返回 ReadableStream
对象,能读取 Blob 内容。
Blob.text
1 | Blob.text() |
方法返回一个 Promise
对象,包含 Blob 中的内容,使用 UTF-8 格式编码。
1 | var textPromise = Blob.text(); |
Blob.arrayBuffer
1 | Blob.arrayBuffer() |
方法返回一个 Promise
对象,包含 Blob 中的数据, ArrayBuffer
使用二进制格式编码。
1 | var bufferPromise = blob.arrayBuffer(); |
Blob 数据来源
由其他 Blob 复制而来
从客户端数据库读取
通过 HTTP 由 web下载
使用 Blob 构造函数,从字符串、ArrayBuffer对象、或其他 Blob 创建
File 对象,File 对象是 Blob 对象的子类
File对象来源
- 拖放 API
- 文件系统 API