更新時(shí)間:2022-10-25 來(lái)源:黑馬程序員 瀏覽量:
Blob對(duì)象就是一個(gè)包含只讀原始數(shù)據(jù)的類(lèi)文件對(duì)象,其實(shí)File類(lèi)型就派生子Blob類(lèi)型,并且擴(kuò)展了支持操作用戶(hù)本地文件的功能。Blob對(duì)象可以直接調(diào)用構(gòu)造函數(shù)來(lái)生成。
var fileParts=['<a>hey man</a>']; var myBlob=new Blob(fileParts, { "type":"text/xml"});
Blob對(duì)象還支持slice()方法,用于對(duì)數(shù)據(jù)進(jìn)行切割:
var yourBlob=myBlob.slice(10,20);
File對(duì)象同樣繼承了Blob的slice()方法,可以利用此方法對(duì)File對(duì)象預(yù)先進(jìn)行分割,然后再讀取、上傳,最后在服務(wù)器端進(jìn)行組裝——異步上傳的原理就是這樣。如果再記住分割點(diǎn),這樣即使網(wǎng)絡(luò)中途斷掉,也可以在下次傳輸時(shí)從斷點(diǎn)續(xù)傳。
除了都接受Blob和File對(duì)象,這些方法另外一個(gè)共同點(diǎn)是,由于JavaScript本身基于事件驅(qū)動(dòng),這些和平臺(tái)相關(guān)的方法都是異步方法。即調(diào)用時(shí)立即返回,讀取文件操作完成后再觸發(fā)相應(yīng)的load事件。
除了load事件,F(xiàn)ileReader對(duì)象還會(huì)調(diào)用這樣一些事件處理程序。
(1)onabort:當(dāng)讀取操作被終止時(shí)調(diào)用(調(diào)用abort方法)
(2)onerror:當(dāng)讀取操作發(fā)送錯(cuò)誤時(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)讀取操作將要開(kāi)始之前調(diào)用。
(6)onprogress:在讀取數(shù)據(jù)過(guò)程中周期性調(diào)用。該事件為最有用的事件,在加載較大的文件時(shí),可以提供一個(gè)進(jìn)度條讓用戶(hù)知道當(dāng)前加載進(jìn)度,不讓用戶(hù)產(chǎn)生焦躁感。
【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營(yíng)】深圳跨境電商運(yùn)營(yíng)畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線(xiàn)均薪資 1W+
2025-09-19【AI鴻蒙開(kāi)發(fā)】上海校區(qū)AI鴻蒙開(kāi)發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19【AI大模型開(kāi)發(fā)-Python】畢業(yè)33個(gè)工作日,就業(yè)率已達(dá)到94.55%,班均薪資20763元
2025-09-19【AI智能應(yīng)用開(kāi)發(fā)-Java】畢業(yè)當(dāng)天offer率91%,薪資1W+占比54.2%,班級(jí)均薪12k+
2025-09-19