JavaScript之团对象类型的具体使用方法

  

Blob(二进制大对象)术语最初来自数据库(oracle中也有类似的栏位类型),早期数据库因为要存储声音、图片,以及可执行程序等二进制数据对象所以给该类对象取名为Blob只
  

  

,在Web领域,团被定义为包含只读数据的类文件对象.Blob中的数据不一定是js原生数据形式。常见的文件接口就继承自Blob,并扩展它用于支持用户系统的本地文件。

  

 JavaScript之团对象类型的具体使用方法

  

构建一个Blob对象通常有三种方式:

  
      <李>通过团对象的构造函数来构建。   <李>从已有的团对象调用片接口切出一个新的团对象。   <李>画布API toBlob方法,把当前绘制信息转为一个团对象。下面只看第一种的实现:李   
  

用法:新方法创建团对象(构造函数来构建)

        var blob=new blob(数组(可选),选项(可选));      

构造函数,接受两个参数

  

第一个参数:为一个数据序列,可以是任意格式的值,例如,任意数量的字符串,气泡以及ArrayBuffers。
  

  

第二个参数:用于指定将要放入Blob中的数据的类型(MIME)(后端可以通过枚举MimeType,获取对应类型:
  

        MimeType MimeType=MimeType.toEnum (file.getContentType ());。   之前            & lt; script>   var blob=new blob ((“Hello World !”),{类型:“文本/普通”});   & lt;/script>      

<>强团对象的基本属性:

  
      <李>大小:Blob对象包含的字节数。(只读)   <李>类型:,团对象包含的数据类型MIME,如果类型未知则返回空字符串。   
  

<强>原生对象构建团

        & lt;脚本type=" text/javascript祝辞   窗口。onload=function () {   var blob=new blob (1234);   }   & lt;/script>      

提示出错:

  
  

未捕获TypeError:未能构建“Blob”:第一个参数是一个数组,和它有索引属性。

     

原因在于Blob构造函数要求第一个参数必须是数组,而这里第一个参数既不是一个数组,也没有可索引的属性,既然这里提到了对象的可索引属性,让我联想到了类数组的概念,而参数就是一个很好的例子。来试一试:

        & lt;脚本type=" text/javascript祝辞   函数testArgumentsBlob () {   var blob=new blob(参数);   console.log (blob.size);//3   console.log (blob.type);//?   }   窗口。onload=function () {   testArgumentsBlob (1、2、3);   }   & lt;/script>      

可以看到即使是类数组对象,而数组元素类型是数量也能得出正确的结论,猜想大概是由于构造函数内部把号码转化为字符串的缘故吧!

  

再来试一试其他的参数类型:

        窗口。onload=function () {   arg var={你好:" 2016 "};   var blob=new blob ([JSON。stringify (arg null,“\ t”),{类型:application/json "});   console.log (blob.type);//应用程序/json   console.log (blob.size);//20   }      

blob。application/json类型等于没问题.arg转为字符串后的长度为16加上制表符\ t的宽度4个字节等于20。
  

  

<>强团对象的基本方法:,

  

大文件分割(切片()方法),片方法与数组的片类似。

        Blob。片([开始,[结束,[- type]]])      

片()方法接受三个参数,起始偏移量,结束偏移量,还有可选的mime类型。如果mime类型,没有设置,那么新的团对象的mime类型和父级一样。

  

当要上传大文件的时候,此方法非常有用,可以将大文件分割分段,然后各自上传,因为分割之后的团对象和原始的是独立存在的。

  

不过目前浏览器实现此方法还没有统一,火狐使用的是mozSlice(),铬使用的是webkitSlice(),其他浏览器则正常的方式片(),

  

可以写一个兼容各浏览器的方法:

        函数sliceBlob (blob,开始,结束,类型){   类型=| | blob.type;   如果(blob.mozSlice) {   返回blob。mozSlice(开始、结束类型);   }else if (blob.webkitSlice) {   返回blob。webkitSlice(开始、结束类型);   其他}{   把新的错误(“这行不通!”);   }   }

JavaScript之团对象类型的具体使用方法