国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

FileReader api

quietin / 3654人閱讀

摘要:如果二進(jìn)制大對(duì)象引用處于非可讀狀態(tài)在上下文對(duì)象上設(shè)置錯(cuò)誤屬性,用來(lái)返回,并且觸發(fā)一個(gè)事件,在上下文對(duì)象中調(diào)用錯(cuò)誤,終止流程。當(dāng)該方法被調(diào)用,用戶代理將會(huì)執(zhí)行以下過(guò)程如果狀態(tài)為,拋出非法狀態(tài)錯(cuò)誤異常,并終止流程。

FileReader API

FileReader api為用戶提供了方法去讀取一個(gè)文件或者一個(gè)二進(jìn)制大對(duì)象,并且提供了事件模型讓用戶可以操作讀取后的結(jié)果。

接口
  // window, worker中可用
  [Constructor, Exposed=Window,Worker]
  // 實(shí)現(xiàn)EventTarget的FileReader接口聲明
  interface FileReader: EventTarget {

    // 異步的讀取方法
    // 直接讀取二進(jìn)制大對(duì)象為ArrayBuffer類型
    void readAsArrayBuffer(Blob blob);
    
    // 讀取為文本,第二個(gè)參數(shù)可指定編碼類型
    void readAsText(Blob blob, optional DOMString label);
    
    // 讀取為base64格式
    void readAsDataURL(Blob blob);

    // 中斷讀取
    void abort();

    // 狀態(tài)常量
    
    // 還沒有加載任何數(shù)據(jù)
    const unsigned short EMPTY = 0;
    
    // 數(shù)據(jù)正在加載中
    const unsigned short LOADING = 1;
    
    // 已完成全部的讀取請(qǐng)求
    const unsigned short DONE = 2;

    // 只讀,獲取常量中的某一個(gè)狀態(tài)
    readonly attribute unsigned short readyState;

    // 返回文件結(jié)果,只讀的,只有在讀取結(jié)束后才有效
    // 數(shù)據(jù)的格式取決于讀取操作是由哪個(gè)方法發(fā)起的
    readonly attribute (DOMString or ArrayBuffer)? result;

    // 如果讀取時(shí)發(fā)生錯(cuò)誤,只讀的
    readonly attribute DOMError? error;

    // 事件方法屬性
    
    // 當(dāng)讀取開始時(shí)的事件
    attribute EventHandler onloadstart;
    
    // 當(dāng)進(jìn)行時(shí)的事件
    attribute EventHandler onprogress;
    
    // 當(dāng)讀取時(shí)的事件
    attribute EventHandler onload;
    
    // 當(dāng)取消時(shí)的事件
    attribute EventHandler onabort;
    
    // 當(dāng)錯(cuò)誤時(shí)的事件
    attribute EventHandler onerror;
    
    // 當(dāng)讀取完成的事件
    attribute EventHandler onloadend;

  };
    
構(gòu)造器

當(dāng)FileReader構(gòu)造器被調(diào)用的時(shí)候,用戶代理必須返回一個(gè)新的FileReader對(duì)象。該構(gòu)造器必須在Window 或者 WorkerGlobalScope 環(huán)境下可用.

事件處理屬性

下列的內(nèi)容是事件處理屬性和他們的事件處理類型:

事件處理屬性 事件處理類型
onloadstart loadstart
onprogress progress
onabort abort
onerror error
onload load
onloadend loadend
FileReader States 狀態(tài)

FileReader對(duì)象有三種狀態(tài),在readyState屬性中,當(dāng)觸發(fā)getting訪問操作,必然會(huì)返回一個(gè)FileReader的當(dāng)前狀態(tài),而他的值必然是下面三個(gè)中的其中一個(gè):

EMPTY (數(shù)字值為 0)

當(dāng)FileReader對(duì)象唄創(chuàng)建的時(shí)候,是不存在pending讀取狀態(tài)的,因?yàn)榇藭r(shí)沒有任何讀取方法被調(diào)用。這個(gè)空狀態(tài)是創(chuàng)建FileReader時(shí)候的初始狀態(tài),直到某個(gè)讀取方法被調(diào)用。

LOADING (數(shù)字值為 1)

當(dāng)一個(gè)文件或者二進(jìn)制大對(duì)象正在被讀取,某一個(gè)讀取方法正在進(jìn)行的時(shí)候,并且沒有錯(cuò)誤發(fā)生的時(shí)候,狀態(tài)為loading

DONE (數(shù)字值為2)

當(dāng)文件對(duì)象或者二進(jìn)制大對(duì)象被讀入內(nèi)存的時(shí)候,或者發(fā)生一個(gè)讀取錯(cuò)誤的時(shí)候,或者用戶調(diào)用了abort()操作的時(shí)候,這個(gè)時(shí)候,F(xiàn)ileReader不再進(jìn)行讀取,如果狀態(tài)被設(shè)置為了完成,這意味著某一個(gè)讀取方法被調(diào)用過(guò)了
讀取一個(gè)文件或者二進(jìn)制大對(duì)象(Blob)

FileReader接口有三個(gè)異步讀取方法,readAsArrayBuffer, readAsText, and readAsDataURL,他們可以把文件讀入內(nèi)存,如果多個(gè)讀取方法同時(shí)被調(diào)用(一個(gè)FileReader對(duì)象上),用戶代理必須在任何讀取進(jìn)行中的時(shí)候拋出一個(gè)非法狀態(tài)錯(cuò)誤

result屬性

當(dāng)訪問result屬性,該屬性將會(huì)返回一個(gè)原始二進(jìn)制數(shù)據(jù)或者一個(gè)ArrayBuffer對(duì)象或者null以表示所讀取文件的內(nèi)容.

當(dāng)訪問該屬性的時(shí)候,如果準(zhǔn)備狀態(tài)為EMPTY,你將得到一個(gè)null結(jié)果

當(dāng)訪問該屬性的時(shí)候,如果讀取過(guò)程中發(fā)生了錯(cuò)誤,你將得到一個(gè)null結(jié)果

當(dāng)訪問該屬性的時(shí)候,如果是使用了readAsBataURL讀取方法,result屬性必然會(huì)返回一個(gè)DataURL編碼的字符串

當(dāng)訪問該屬性的時(shí)候,如果readAsText讀取方法被調(diào)用,并且沒發(fā)生錯(cuò)誤,該屬性將返回指定編碼的文檔字符串。

當(dāng)訪問該屬性的時(shí)候,如果readAsArrayBuffer方法被調(diào)用,并且中間沒有錯(cuò)誤發(fā)生,該屬性將返回一個(gè)ArrayBuffer對(duì)象

readAsDataURL(blob) 方法

當(dāng)調(diào)用該方法,用戶代理將會(huì)執(zhí)行以下步驟

如果狀態(tài)為loading,拋出非法狀態(tài)錯(cuò)誤異常,并終止流程。

如果二進(jìn)制大對(duì)象引用處于非可讀狀態(tài)( CLOSED readability state),在上下文對(duì)象上設(shè)置錯(cuò)誤屬性,用來(lái)返回 InvalidStateError DOMError,并且觸發(fā)一個(gè)error事件,在上下文對(duì)象中調(diào)用錯(cuò)誤,終止流程。

如果沒事,就將讀取狀態(tài)設(shè)置為L(zhǎng)OADING。

初始化一個(gè)帶注解的讀取任務(wù),將blob參數(shù)作為輸入并且處理在下述file reading task source上的任務(wù)隊(duì)列

處理讀取錯(cuò)誤,如果開始讀取就失敗,流程將進(jìn)入錯(cuò)誤觸發(fā)流程

處理讀取并且觸發(fā)loadstart事件

處理讀取到的數(shù)據(jù),觸發(fā)progress事件

處理讀取到結(jié)束符(EOF),執(zhí)行以下步驟:

設(shè)置readyState為DONE

設(shè)置result屬性內(nèi)容為讀操作的DataURL結(jié)果,當(dāng)訪問該屬性的時(shí)候,將二進(jìn)制對(duì)象數(shù)據(jù)以DataURL形式返回

觸發(fā)load事件

直到readyState不是loading狀態(tài),觸發(fā)loadend事件

結(jié)束流程

readAsText(blob, label) 方法

該方法接受一個(gè)額外的可選參數(shù)label,他是一個(gè)字符串,表明讀取成的文檔應(yīng)該以何種形式編碼,如果提供了該參數(shù),當(dāng)在調(diào)用該方法過(guò)程中,將會(huì)以該種編碼形式編碼讀取到的文檔。

當(dāng)該方法被調(diào)用,用戶代理將會(huì)執(zhí)行以下過(guò)程:

如果readyState狀態(tài)為loading,拋出非法狀態(tài)錯(cuò)誤異常,并終止流程。

如果二進(jìn)制大對(duì)象引用處于非可讀狀態(tài)( CLOSED readability state),在上下文對(duì)象上設(shè)置錯(cuò)誤屬性,用來(lái)返回 InvalidStateError DOMError,并且觸發(fā)一個(gè)error事件,在上下文對(duì)象中調(diào)用錯(cuò)誤,終止流程。

如果沒事,就將讀取狀態(tài)設(shè)置為L(zhǎng)OADING。

初始化一個(gè)帶注解的讀取任務(wù),將blob參數(shù)作為輸入并且處理在下述file reading task source上的任務(wù)隊(duì)列

處理讀取錯(cuò)誤,如果開始讀取就失敗,流程將進(jìn)入錯(cuò)誤觸發(fā)流程

處理讀取并且觸發(fā)loadstart事件

處理讀取到的數(shù)據(jù),觸發(fā)progress事件

處理讀取到結(jié)束符(EOF),執(zhí)行以下步驟:

設(shè)置readyState為DONE

設(shè)置result屬性內(nèi)容為讀操作的結(jié)果,當(dāng)訪問該屬性的時(shí)候,將數(shù)據(jù)以規(guī)定編碼形式編碼后返回

觸發(fā)load事件

直到readyState不是loading狀態(tài),觸發(fā)loadend事件

結(jié)束流程

readAsArrayBuffer(blob) 方法

當(dāng)該方法被調(diào)用,用戶代理執(zhí)行以下步驟:

如果readyState狀態(tài)為loading,拋出非法狀態(tài)錯(cuò)誤異常,并終止流程。

如果二進(jìn)制大對(duì)象引用處于非可讀狀態(tài)( CLOSED readability state),在上下文對(duì)象上設(shè)置錯(cuò)誤屬性,用來(lái)返回 InvalidStateError DOMError,并且觸發(fā)一個(gè)error事件,在上下文對(duì)象中調(diào)用錯(cuò)誤,終止流程。

如果沒事,就將讀取狀態(tài)設(shè)置為L(zhǎng)OADING。

初始化一個(gè)帶注解的讀取任務(wù),將blob參數(shù)作為輸入并且處理在下述file reading task source上的任務(wù)隊(duì)列

處理讀取錯(cuò)誤,如果開始讀取就失敗,流程將進(jìn)入錯(cuò)誤觸發(fā)流程

處理讀取并且觸發(fā)loadstart事件

處理讀取到的數(shù)據(jù),觸發(fā)progress事件

處理讀取到結(jié)束符(EOF),執(zhí)行以下步驟:

設(shè)置readyState為DONE

設(shè)置result屬性內(nèi)容為讀操作的結(jié)果,當(dāng)訪問該屬性的時(shí)候,將數(shù)據(jù)以ArrayBuffer對(duì)象的形式返回

觸發(fā)load事件

直到readyState不是loading狀態(tài),觸發(fā)loadend事件

結(jié)束流程

錯(cuò)誤處理步驟

首先,這些錯(cuò)誤步驟是用于處理讀取過(guò)程中獲得失敗原因的。

設(shè)置上下文中的readyState為DONE狀態(tài),然后將result置null

設(shè)置上下文中的error屬性,當(dāng)我們?cè)L問ctx.error的時(shí)候,值返回一個(gè)DOMError對(duì)象,該對(duì)象記錄了失敗原因。觸發(fā)error事件。

直到readyState不是loading狀態(tài),觸發(fā)loadend事件

流程終止并終止任何正在進(jìn)行的讀方法

abort() 方法

當(dāng)調(diào)用該方法,用戶代理做以下事情:

如果readyState = EMPTY或者 readyState = DONE, 設(shè)置result為null,終止流程

如果狀態(tài)為L(zhǎng)OADING,設(shè)置狀態(tài)為DONE,設(shè)置result為null,

如果下述讀取任務(wù)在任務(wù)隊(duì)列中,從隊(duì)列中移除這些任務(wù)

終止正在執(zhí)行的讀取方法,終止其處理流程

觸發(fā)abort事件

觸發(fā)loadend事件

blob參數(shù)

FileReader上有三個(gè)異步方法,F(xiàn)ileReaderSync有三個(gè)同步方法,URL對(duì)象上有createObjectURL,createFor兩個(gè)靜態(tài)方法,他們都接受一個(gè)叫做blob的參數(shù),這一章節(jié)將闡述該參數(shù)的定義

blob

這個(gè)形式參數(shù)是指調(diào)用時(shí)的一個(gè)二進(jìn)制大對(duì)象的實(shí)參,并且他必然是一個(gè)非底層文件系統(tǒng)拿到的File/Filelist/Blob對(duì)象的引用

聲明編碼

當(dāng)我們通過(guò)readAsText(bolb, label)方法讀取blob對(duì)象的時(shí)候,必須遵循:

使 encoding 為 null

如果提供了label參數(shù),設(shè)置encoding = label,這個(gè)label字符串必須符合現(xiàn)行編碼標(biāo)準(zhǔn)所規(guī)定的各種編碼類型

如果"獲取編碼"(2這一步)這一步驟返回失敗,設(shè)置encoding為null

如果encoding為null,并且blob對(duì)象提供了type屬性,并且限定了一個(gè)字符集參數(shù)(例如 text/plain;charset=UTF-8),然后該步驟會(huì)取此限定參數(shù)作為encoding。

如果上一步失敗,設(shè)置encoding = null

如果encoding = null, 設(shè)置encoding = "utf-8"

獲取對(duì)blob的編碼結(jié)果

事件

FileReader對(duì)象就是自己所接受事件的event target。。。因?yàn)閺牡谝徽鹿?jié)我們知道這個(gè)FileReader API是繼承自 EventTarget的。。。。

當(dāng)按照規(guī)范說(shuō)明觸發(fā)某個(gè)進(jìn)度事件(onload什么的,event對(duì)象的構(gòu)造函數(shù)是ProgressEvent)的時(shí)候,將遵循以下內(nèi)容:

進(jìn)度事件的e,是不會(huì)冒泡的e.bubbles = false

進(jìn)度事件的事件對(duì)象e是不可取消的 e.cancelable = false

術(shù)語(yǔ)“觸發(fā)一個(gè)事件(fire an event)”是在DOM Core規(guī)范中定義的。Progress Event是Progress Events規(guī)范定義的

const reader = new FileReader();
reader.onload = function (e) {
    console.log(e.target === this) // true
    console.log(this === reader) // true
    console.log(e.bubbles === false) // true
    console.log(e. cancelable === false) // true
    console.log(e.cancelBubble === false) // true
    console.log(console.log(e.constructor.toString())) // function ProgressEvent() { [native code] }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/88606.html

相關(guān)文章

  • 上傳圖片本地預(yù)覽效果實(shí)現(xiàn)(兼容IE8)

    摘要:以上傳圖片為例。我們可以通過(guò)獲取上傳的圖片相關(guān)信息,但是想要實(shí)現(xiàn)本地預(yù)覽還需要借助來(lái)實(shí)現(xiàn)可以讀取本地圖片,并將圖片數(shù)據(jù)轉(zhuǎn)換成編碼的字符串形式嵌入到頁(yè)面中。在我們實(shí)現(xiàn)上傳圖片的效果里,就有用到。圖片預(yù)覽兼容處理及以下版本不支持和。 最近項(xiàng)目里需要用到上傳圖片并預(yù)覽的功能,于是寫了個(gè)jQuery預(yù)覽圖片插件,下載地址。如果有需要的,可以直接下載。第一次寫jQuery插件,如有不對(duì)之處,歡迎...

    avwu 評(píng)論0 收藏0
  • 業(yè)務(wù)開發(fā)情境之:文本框的base64編碼圖片粘貼直接上傳七牛

    摘要:我們的功能需要用到的接口事件讀取完成,無(wú)論成功與否,還有方法將文件讀取為。檢測(cè)是否為圖片類型圖片的編碼這里設(shè)置獲取的數(shù)據(jù)獲取后臺(tái)的給的將文件讀取為上傳事件當(dāng)?shù)臅r(shí)候說(shuō)明我們成功的把圖片傳上七牛了,并且七牛給我們返回了一個(gè)字符串。 最近在做的一個(gè)聊天消息的功能。有個(gè)圖片上傳的功能,可以通過(guò)按鈕上傳也可以通過(guò)Ctrl+V上傳。按鈕上傳的我們可以通過(guò)七牛的API就可以做了,我們現(xiàn)在來(lái)說(shuō)說(shuō)Ctr...

    xiao7cn 評(píng)論0 收藏0
  • HTML5中的File API

    摘要:創(chuàng)建新對(duì)象屬性讀取文件時(shí)發(fā)生的錯(cuò)誤表明對(duì)象的當(dāng)前狀態(tài)讀取到的文件內(nèi)容,只在讀取操作完成后才有效,數(shù)據(jù)格式取決于采用的讀取操作方法中止該讀取操作。以純文本的形式讀取,中的數(shù)據(jù)為字符串。屬性中將包含一個(gè)格式的字符串。讀取文件的二進(jìn)制源碼。 file 提供文件有關(guān)的信息 1. file對(duì)象 file對(duì)象的來(lái)源一般分為3種: (1)在元素上選擇上傳文件后返回的Filelist對(duì)象; (2)由...

    xiguadada 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<