首頁技術(shù)文章正文

Web前端培訓(xùn):Blob對象是什么?

更新時(shí)間:2022-10-25 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  Blob對象就是一個(gè)包含只讀原始數(shù)據(jù)的類文件對象,其實(shí)File類型就派生子Blob類型,并且擴(kuò)展了支持操作用戶本地文件的功能。Blob對象可以直接調(diào)用構(gòu)造函數(shù)來生成。

var fileParts=['<a>hey man</a>'];
var myBlob=new Blob(fileParts, { "type":"text/xml"});

  Blob對象還支持slice()方法,用于對數(shù)據(jù)進(jìn)行切割:

var yourBlob=myBlob.slice(10,20);

  File對象同樣繼承了Blob的slice()方法,可以利用此方法對File對象預(yù)先進(jìn)行分割,然后再讀取、上傳,最后在服務(wù)器端進(jìn)行組裝——異步上傳的原理就是這樣。如果再記住分割點(diǎn),這樣即使網(wǎng)絡(luò)中途斷掉,也可以在下次傳輸時(shí)從斷點(diǎn)續(xù)傳。

  除了都接受Blob和File對象,這些方法另外一個(gè)共同點(diǎn)是,由于JavaScript本身基于事件驅(qū)動,這些和平臺相關(guān)的方法都是異步方法。即調(diào)用時(shí)立即返回,讀取文件操作完成后再觸發(fā)相應(yīng)的load事件。

  除了load事件,F(xiàn)ileReader對象還會調(diào)用這樣一些事件處理程序。

  (1)onabort:當(dāng)讀取操作被終止時(shí)調(diào)用(調(diào)用abort方法)

  (2)onerror:當(dāng)讀取操作發(fā)送錯誤時(shí)調(diào)用。

  (3)onload:當(dāng)讀取操作成功完成時(shí)調(diào)用。

  (4)onloadend:當(dāng)讀取操作完成時(shí)調(diào)用,不管是成功還是失敗,該處理程序在onload或者onerror后調(diào)用。

  (5)onloadstart:當(dāng)讀取操作將要開始之前調(diào)用。

  (6)onprogress:在讀取數(shù)據(jù)過程中周期性調(diào)用。該事件為最有用的事件,在加載較大的文件時(shí),可以提供一個(gè)進(jìn)度條讓用戶知道當(dāng)前加載進(jìn)度,不讓用戶產(chǎn)生焦躁感。

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!