FIile 之 blob

Blob 对象表示一个不可变、原始数据的类文件对象。Blob 表示的不一定是JavaScript原生格式的数据。File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。

要从其他非blob对象和数据构造一个 Blob,请使用 Blob() 构造函数。要创建一个 blob 数据的子集 blob,请使用 slice() 方法。要获取用户文件系统上的文件对应的 Blob 对象,请参阅 File 文档。

接受 Blob 对象的API也被列在 File 文档中。

1.构造函数

1.Blob(blobParts[, options])返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。

2.属性

1.Blob.size 只读    Blob 对象中所包含数据的大小(字节)。

var sizeInBytes = blob.size

Blob接口的size属性返回的大小BlobFile以字节为单位。


2.Blob.type 只读    一个字符串,表明该 Blob 对象所包含数据的 MIME 类型。如果类型未知,则该值为空字符串。

var mimetype = blob.type

返回:一个DOMString包含文件的MIME类型,或者如果类型无法确定一个空字符串。

3.方法

1.Blob.slice([start[, end[, contentType]]])    返回一个新的 Blob 对象,包含了源 Blob 对象中指定范围内的数据。

Blob.slice() 方法用于创建一个包含源 Blob的指定字节范围内的数据的新 Blob 对象。

var blob = instanceOfBlob.slice([start [, end [, contentType]]]};

start 可选

这个参数代表 Blob 里的下标,表示第一个会被会被拷贝进新的 Blob 的字节的起始位置。如果你传入的是一个负数,那么这个偏移量将会从数据的末尾从后到前开始计算。举例来说, -10 将会是  Blob 的倒数第十个字节。它的默认值是0, 如果你传入的start的长度大于源 Blob 的长度,那么返回的将会是一个长度为0并且不包含任何数据的一个 Blob 对象。

end 可选

这个参数代表的是 Blob 的一个下标,这个下标-1的对应的字节将会是被拷贝进新的Blob 的最后一个字节。如果你传入了一个负数,那么这个偏移量将会从数据的末尾从后到前开始计算。举例来说, -10 将会是 Blob 的倒数第十个字节。它的默认值就是它的原始长度(size).

contentType 可选

给新的 Blob 赋予一个新的文档类型。这将会把它的 type 属性设为被传入的值。它的默认值是一个空的字符串。


2.Blob.stream()    返回一个能读取blob内容的 ReadableStream

Blob接口的stream() 方法返回一个ReadableStream对象,读取它将返回包含在Blob中的数据。

var stream = blob.stream();

使用说明

使用 stream() 函数与其返回的ReadableStream对象,你将得到一些有趣的能力:

  • 调用方法getReader(),在返回的stream上获取一个对象,通过ReadableStreamDefaultReader接口提供的read()方法读取blob对象的方法。
  • 调用返回stream对象的pipeTo()方法将blob对象的数据传输到可写流。
  • 调用返回stream对象的tee()方法以准备可读流。该方法会返回一个数组,该数组包含两个新的 ReadableStream 对象,每个对象都会返回 Blob的内容。
  • 调用返回stream对象的pipeThrough()方法,通过一个TransformStream对象或其它任意可读可写对传输流对象。

 

3.Blob.text()    返回一个promise且包含blob所有内容的UTF-8格式的 USVString

var textPromise = blob.text();

blob.text().then(text => /* do something with the text */);

var text = await blob.text();

 

4.Blob.arrayBuffer()返回一个promise且包含blob所有内容的二进制格式的 ArrayBuffer 

介面中的arrayBuffer()方法会Blob传回Promise,并以Blob的内容解析为内含的二进位资料ArrayBuffer

var bufferPromise = blob.arrayBuffer();

blob.arrayBuffer().then(buffer => /* process the ArrayBuffer */);

var buffer = await blob.arrayBuffer();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值