亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

FileReader api

quietin / 3711人閱讀

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

FileReader API

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

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

    // 異步的讀取方法
    // 直接讀取二進(jìn)制大對象為ArrayBuffer類型
    void readAsArrayBuffer(Blob blob);
    
    // 讀取為文本,第二個參數(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;
    
    // 已完成全部的讀取請求
    const unsigned short DONE = 2;

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

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

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

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

  };
    
構(gòu)造器

當(dāng)FileReader構(gòu)造器被調(diào)用的時候,用戶代理必須返回一個新的FileReader對象。該構(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對象有三種狀態(tài),在readyState屬性中,當(dāng)觸發(fā)getting訪問操作,必然會返回一個FileReader的當(dāng)前狀態(tài),而他的值必然是下面三個中的其中一個:

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

當(dāng)FileReader對象唄創(chuàng)建的時候,是不存在pending讀取狀態(tài)的,因為此時沒有任何讀取方法被調(diào)用。這個空狀態(tài)是創(chuàng)建FileReader時候的初始狀態(tài),直到某個讀取方法被調(diào)用。

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

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

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

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

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

result屬性

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

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

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

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

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

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

readAsDataURL(blob) 方法

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

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

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

如果沒事,就將讀取狀態(tài)設(shè)置為LOADING。

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

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

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

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

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

設(shè)置readyState為DONE

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

觸發(fā)load事件

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

結(jié)束流程

readAsText(blob, label) 方法

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

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

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

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

如果沒事,就將讀取狀態(tài)設(shè)置為LOADING。

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

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

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

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

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

設(shè)置readyState為DONE

設(shè)置result屬性內(nèi)容為讀操作的結(jié)果,當(dāng)訪問該屬性的時候,將數(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)錯誤異常,并終止流程。

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

如果沒事,就將讀取狀態(tài)設(shè)置為LOADING。

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

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

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

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

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

設(shè)置readyState為DONE

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

觸發(fā)load事件

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

結(jié)束流程

錯誤處理步驟

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

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

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

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

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

abort() 方法

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

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

如果狀態(tài)為LOADING,設(shè)置狀態(tài)為DONE,設(shè)置result為null,

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

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

觸發(fā)abort事件

觸發(fā)loadend事件

blob參數(shù)

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

blob

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

聲明編碼

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

使 encoding 為 null

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

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

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

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

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

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

事件

FileReader對象就是自己所接受事件的event target。。。因為從第一章節(jié)我們知道這個FileReader API是繼承自 EventTarget的。。。。

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

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

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

術(shù)語“觸發(fā)一個事件(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/88606.html

相關(guān)文章

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

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

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

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

    xiao7cn 評論0 收藏0
  • HTML5中的File API

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

    xiguadada 評論0 收藏0

發(fā)表評論

0條評論

quietin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<