濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > 深入解析HTML5中的Blob對(duì)象的使用

深入解析HTML5中的Blob對(duì)象的使用

熱門標(biāo)簽:外呼線穩(wěn)定線路 南通數(shù)據(jù)外呼系統(tǒng)推廣 pageadm實(shí)現(xiàn)地圖標(biāo)注 阜陽企業(yè)外呼系統(tǒng) 邢臺(tái)縣地圖標(biāo)注app 地圖標(biāo)注位置能賺錢嗎 外呼系統(tǒng)電話怎么投訴 申請(qǐng)400電話流程簡(jiǎn)介 呼和浩特外呼電銷系統(tǒng)排名

HTML5中的Blob對(duì)象和MYSQL中的BLOB類型在概念上是有點(diǎn)區(qū)別的。MYSQL中的BLOB類型就只是個(gè)二進(jìn)制數(shù)據(jù)容器。而HTML5中的Blob對(duì)象除了存放二進(jìn)制數(shù)據(jù)外還可以設(shè)置這個(gè)數(shù)據(jù)的MINE類型,這相當(dāng)于對(duì)文件的儲(chǔ)存,其它很多二進(jìn)制對(duì)象也是從這個(gè)對(duì)象繼承的。
  在稍低版本的現(xiàn)代瀏覽器中,這個(gè)Blob對(duì)象還沒規(guī)范化,因此需要BlobBuilder之類的方式來創(chuàng)建。但是現(xiàn)在Blob已經(jīng)規(guī)范到可以直接new它的構(gòu)造器Blob來創(chuàng)建了,而且瀏覽器幾乎都已經(jīng)支持了這個(gè)方式,所以對(duì)于舊標(biāo)準(zhǔn)咱就沒必要糾結(jié)了。

CSS Code復(fù)制內(nèi)容到剪貼板
  1. var data='<b style="font-size:32px;color:red;">次碳酸鈷</b>';   
  2. var blob=new Blob([data],{"type":"text/html"});   
  3. console.log(blob);  

這樣我們就創(chuàng)建了一個(gè)Blob對(duì)象,注意Blob這個(gè)構(gòu)造器的參數(shù)比較詭異,第一個(gè)參數(shù)是一組數(shù)據(jù),所以必須是數(shù)組,即使像上面的例子一樣只有一個(gè)字符串也必須用數(shù)組裝起來。第二個(gè)參數(shù)是對(duì)這一Blob對(duì)象的配置屬性,目前也只有一個(gè)type也就是相關(guān)的MIME需要設(shè)置,使用key-value的方式也許是為了今后的擴(kuò)展。
  那么,把數(shù)據(jù)做成Blob有什么用呢?對(duì)于Blob對(duì)象,我們可以創(chuàng)建出一個(gè)URL來訪問它。使用URL對(duì)象的createObjectURL方法。

CSS Code復(fù)制內(nèi)容到剪貼板
  1. var data='<b style="font-size:32px;color:red;">次碳酸鈷</b>';   
  2. var blob=new Blob([data],{"type":"text/html"});   
  3. onload=function(){   
  4.   var iframe=document.createElement("iframe");   
  5.   iframe.src=URL.createObjectURL(blob);   
  6.   document.body.appendChild(iframe);   
  7. };  

 不僅是上面例子中的text/html,任何瀏覽器支持的類型都可以這么用。而且這個(gè)Blob-URL的生存周期是從創(chuàng)建到文檔釋放,不會(huì)造成資源的浪費(fèi)。
  Blob是一個(gè)HTML5中很基本的二進(jìn)制數(shù)據(jù)對(duì)象,很多方法的操作參數(shù)都支持使用Blob,這個(gè)我一下也列舉不出。總之,幾乎所有參數(shù)類型是二進(jìn)制數(shù)據(jù)的方法都支持使用Blob作為參數(shù)就對(duì)了。所以把數(shù)據(jù)做成Blob可以讓之后的一些列操作變得更方便。

方法

slice()

返回一個(gè)新的Blob對(duì)象,包含了源Blob對(duì)象中指定范圍內(nèi)的數(shù)據(jù).

CSS Code復(fù)制內(nèi)容到剪貼板
  1. Blob slice(   
  2.   optional long long start,   
  3.   optional long long end,   
  4.   optional DOMString contentType   
  5. };  

參數(shù)
start 可選
開始索引,可以為負(fù)數(shù),語法類似于數(shù)組的slice方法.默認(rèn)值為0.
end 可選
結(jié)束索引,可以為負(fù)數(shù),語法類似于數(shù)組的slice方法.默認(rèn)值為最后一個(gè)索引.
contentType 可選
新的Blob對(duì)象的MIME類型,這個(gè)值將會(huì)成為新的Blob對(duì)象的type屬性的值,默認(rèn)為一個(gè)空字符串.
返回值
一個(gè)新的Blob對(duì)象,包含了源Blob對(duì)象中指定范圍內(nèi)的數(shù)據(jù).
注意
如果start參數(shù)的值比源Blob對(duì)象的size屬性的值還大,則返回的Blob對(duì)象的size值為0,也就是不包含任何數(shù)據(jù).


BlobPropertyBag

一個(gè)包含有兩個(gè)屬性type和endings的對(duì)象.
type
設(shè)置該Blob對(duì)象的type屬性.
endings(已廢棄)
對(duì)應(yīng)于BlobBuilder.append()方法的endings參數(shù).該參數(shù)的值可以是"transparent"或者"native".
Blob構(gòu)造函數(shù)用法舉例

下面的代碼:

CSS Code復(fù)制內(nèi)容到剪貼板
  1. var aFileParts = ["<a id=\&;a\&;><b id=\&;b\&;>hey!<\/b><\/a>"];   
  2. var oMyBlob = new Blob(aFileParts, { "type" : "text\/xml" }); // the blob  

 
等價(jià)于:

CSS Code復(fù)制內(nèi)容到剪貼板
  1. var oBuilder = new BlobBuilder();   
  2. var aFileParts = ["<a id=\&;a\&;><b id=\&;b\&;>hey!<\/b><\/a>"];   
  3. oBuilder.append(aFileParts[0]);   
  4. var oMyBlob = oBuilder.getBlob("text\/xml"); // the blob  

 
BlobBuilder接口提供了另外一種創(chuàng)建Blob對(duì)象的方式,但該方式現(xiàn)在已經(jīng)廢棄,所以不應(yīng)該再使用了.

例子:使用類型數(shù)組和Blob對(duì)象創(chuàng)建一個(gè)對(duì)象URL

CSS Code復(fù)制內(nèi)容到剪貼板
  1. var typedArray = GetTheTypedArraySomehow();   
  2. var blob = new Blob([typedArray], {type: "application/octet-binary"}); // 傳入一個(gè)合適的MIME類型   
  3. var url = URL.createObjectURL(blob);   
  4. // 會(huì)產(chǎn)生一個(gè)類似blob:d3958f5c-0777-0845-9dcf-2cb28783acaf這樣的URL字符串   
  5. // 你可以像使用一個(gè)普通URL那樣使用它,比如用在img.src上.  

標(biāo)簽:楊凌 內(nèi)蒙古 黃山 蚌埠 撫順 鶴崗 德州 辛集

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《深入解析HTML5中的Blob對(duì)象的使用》,本文關(guān)鍵詞  深入,解析,HTML5,中的,Blob,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《深入解析HTML5中的Blob對(duì)象的使用》相關(guān)的同類信息!
  • 本頁收集關(guān)于深入解析HTML5中的Blob對(duì)象的使用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    县级市| 邵阳县| 万年县| 疏勒县| 鲜城| 贞丰县| 凌云县| 金乡县| 灯塔市| 房山区| 东方市| 饶河县| 玛纳斯县| 兴业县| 克什克腾旗| 榆林市| 洪泽县| 新化县| 喀喇沁旗| 明光市| 北碚区| 新乐市| 克山县| 申扎县| 黄大仙区| 文安县| 临漳县| 永平县| 武定县| 天台县| 绍兴市| 达拉特旗| 桐庐县| 定边县| 旺苍县| 抚松县| 云龙县| 板桥市| 航空| 晋城| 丽水市|