BLOB (binary large object),二进制大对象,是一个可以存储二进制档案的容器。
在计算机中,BLOB常常是资料库中用来存储二进制档案的栏位类型。
BLOB是一个大档案,典型的BLOB是一张图片或一个声音档案,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个资料库)。
Blob接口代表原始二进制数据,通过Blob对象的slice()方法,可以访问里面的位元组数据。Blob接口还有两个属性:size和type。
基本介绍
- 中文名:Blob理论
- 外文名:Blob
- 定义:原始二进制数据
- 属性:size和type
- 系统:计算机
- 套用学科:计算机原理
关于Blob
Blob接口代表原始二进制数据,通过Blob对象的slice()方法,可以访问里面的位元组数据。Blob接口还有两个属性:size和type。
1.size属性
表示Blob对象的位元组长度。Blob对象的二进制数据可藉助FileReader接口读取。如果Blob对象没有位元组数,则size属性为0。
2.type属性
表示Blob对象的MIME类型,如果是未知类型,则返回一个空字元串。使用type属性获取档案的MIME类型,可以更加精确地确定档案的类型,可避免因更改档案的扩展名而造成档案类型的误判。
3.slice()方法
使用slice()方法可以实现档案的切割,并返回一个新的Blob对象。
4.File对象与Blob对象
File对象继承了Blob对象,所以File对象也可以使用Blob对象的属性和方法。
SLICE方法
Blob对象具有一个slice方法,用于从Blob对象所代表的原始二进制数据中抽离一部分数据,然后将这些数据创建为一个新的Blob对象,其使用方法如下所示。
var newBlob*blob.slice(start,end,contentType);
Blob对象的slice方法使用三个参数,均为可选参数,如果三个参数均省略时,相当于把一个Blob对象中的原始二进制数据原样複製到一个新建的Blob对象(即slice方法的返回值)中。
Blob对象的slice方法的第一个参数start的参数值为一个整数值,代表起始複製位置在Blob对象所代表的原始二进制数据中的位置,当start参数值为0时代表从该数据的起始位置(即第一个位元组)开始複製数据;如果start参数值为负数值且Blob对象的size属性值+start参数值大于等于0,则起始複製位置为Blob对象的size属性值+start参数值;如果start参数值为负数值且Blob对象的size属性值+start参数值小于0,则起始複製位置为Blob对象所代表的原始二进制数据的起始位置;如果start参数值为正数值且大于等于Blob对象的size属性值,则起始複製位置为Blob对象的size属性值;如果start参数值为正数值且小于Blob对象的size属性值,则起始複製位置为start参数值。
Blob对象的slice方法的第二个参数end的参数值为一个整数值.代表终了複製位置在Blob对象所代表的原始二迸制数据中的位置,如果不使用该参数,则终了複製位置为Blob对象所代表的原始二进制数据的结束位置;如果end参数值为负数值且Blob对象的size属性值+end参数值大于等于0,则终了複製位置为Blob对象的size属性值+end参数值;如果end参数值为负数值且Blob对象的size属性值+end参数值小于0,则终了複製位置为Blob对象所代表的原始二进制数据的起始位置;如果end参数值为正数值且大于等于Blob对象的size属性值,则终了複製位置为Blob对象的size属性值;如果end参数值为正数值且小于Blob对象的size属性值,则终了複製位置为end参数值j
Blob对象的slice方法的第三个参数为一个字元串值,用于指定新建Blob对象中数据的MIME类型。
创建BLOB
在HTML 5中,可以直接创建一个代表原始二进制数据的Blob对象。创建方法如下:
var blob = new Blob ([blobParts,type]);
当创建一个Blob对象时,可以使用两个可选参数。如果不使用任何参数,创建的Blob对象的size属性值(代表Blob对象的位元组长度)为0,代码示例如下所示。
var blob = new Blob();
Blob构造函式中的第一个参数值为一个数组,其中可以存放任意数量个以下类型的对象,这些对象中所携带的数据将被依序追加到Blob对象中。
1.ArrayBuffer对象
2.ArrayBufferView对象
3.Blob对象
4.String对象
在创建Blob对象时使用第一个参数的代码示例如下:
var blob = new Blobb([“1234”+“5678”]);
var shorts = new Uintl6Atrey(buffer,512,128);
var blobA = new Blob([blob,shorts]);
var bytes = new Uint8Array(buffer,shorts.byteOffset + shorts.byteLength);
vat blobB = new Blob([blob,blobA,bytes]);
vat blobC = new Blob([buffer,blob,blobA,bytes]);
Blob构造函式中的第二个参数值用于指定被创建的Blob对象的type属性值(代表Blob对象的MIME类型),当不使用该参数值时.默认参数值为空字元串,代表未知类型。
在创建Blob对象时使用第二个参数的代码示例如下:
var blob = new Blob([“1234” + “5678”],{type:“text/plain”});
//或
var blob = new Blob([“1234”+“5678”],{type:“text/plain;charset=UTF-8”});
传送BLOB
在HTML 5中,可以通过XML HttpRequest对象的send方法向伺服器传送Blob对象,因为所有File对象(代表一个档案)都是一个Blob对象,所以同样可以通过传送Blob对象的方法来上传档案。
使用XML HttpRequest对象传送Blob对象,页面中显示一个“複製页面档案”按钮与一个进度条控制项(progress元素),用户单击“複製页面档案”按钮时脚本程式使用当前页面中所有代码(包括样式代码与JavaScript代码)创建一个Blob对象,然后通过将该Blob对象指定为XML HttpRequest对象的send方法的参数值的方法向伺服器端传送该Blob对象,伺服器端接收到该Blob对象后将其保存为一个档案,档案名称为“副本_”十当前页面档案的档案名称(包括扩展名,不包括档案路径)。在向伺服器端传送Blob对象的同时,页面中的进度条控制项中将同步显示传送进度。