中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HTML 5中怎么利用FileAPI對文件進行處理

發布時間:2021-07-22 14:11:30 來源:億速云 閱讀:151 作者:Leah 欄目:web開發

這期內容當中小編將會給大家帶來有關HTML 5中怎么利用FileAPI對文件進行處理,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

總覽

FileAPI是一些列文件處理規范的基礎,包含最基礎的文件操作的JavaScript接口設計。其中最主要的接口定義一共有4個:

◆ FileList接口: 可以用來代表一組文件的JS對象,比如用戶通過input[type="file"]元素選中的本地文件列表

◆ Blob接口: 用來代表一段二進制數據,并且允許我們通過JS對其數據以字節為單位進行“切割”

◆ File接口: 用來代步一個文件,是從Blob接口繼承而來的,并在此基礎上增加了諸如文件名、MIME類型之類的特性

◆ FileReader接口: 提供讀取文件的方法和事件

這里有兩點細節需要注意:

1. 我們平時使用input[type="file"]元素都是選中單個文件,其本身是允許同時選中多個文件的,所以會用到FileList

2. Blob接口和File接口可以返回數據的字節數等信息,也可以“切割”,但無法獲取真正的內容,這也正是FileReader存在的意義,而文件大小不一時,讀取文件可能存在明顯的時間花費,所以我們用異步的方式,通過觸發另外的事件來返回讀取到的文件內容

接口描述

這4個接口其實并不復雜,也很好理解(接口中的“#Foo”表示任意Foo類型的對象):

FileList接口

#FileList[index] // 得到第index個文件

Blob接口

#Blob.size // 只讀特性,數據的字節數  #Blob.slice(start, length) // 將當前文件切割并將結果返回

File接口

#File.size // 繼承自Blob,意義同上  #File.slice(start, length) // 繼承自Blob,意義同上  #File.name // 只讀屬性,文件名  #File.type // 只讀屬性,文件的MIME類型  #File.urn // 只讀屬性,代表該文件的URN,幾乎用不到,暫且無視

FileReader方法

#FileReader.readAsBinaryString(blob/file) // 以二進制格式讀取文件內容  #FileReader.readAsText(file, [encoding]) // 以文本(及字符串)格式讀取文件內容,并且可以強制選擇文件編碼  #FileReader.readAsDataURL(file) // 以DataURL格式讀取文件內容  #FileReader.abort() // 終止讀取操作

FileReader事件

#FileReader.onloadstart // 讀取操作開始時觸發  #FileReader.onload // 讀取操作成功時觸發  #FileReader.onloadend // 讀取操作完成時觸發(不論成功還是失敗)  #FileReader.onprogress // 讀取操作過程中觸發  #FileReader.onabort // 讀取操作被中斷時觸發  #FileReader.onerror // 讀取操作失敗時觸發

FileReader屬性

#FileReader.result // 讀取的結果(二進制、文本或DataURL格式)  #FileReader.readyState // 讀取操作的狀態(EMPTY、LOADING、DONE)

代碼示例

舉例一:控制file控件,讀取其中的第二個文件,并將其文本內容在控制臺輸出

var input = document.querySelector('input[type="file"]'); // 找到***個file控件  var firstFile = input.files[0]; // file控件的files特性其實就是一個FileList類型的對象  var secondFile = input.files[1]; // 當file控件的multiple特性為true時,我們可以同時選擇多個文件,通過input.files[n]可以按序訪問這些文件  var reader = new FileReader(); // 新建一個FileReader類型的對象  reader.readAsText(secondFile); // 按文本格式讀取file控件中的第二個文件  reader.onloadend = function (e) { // 綁定讀取操作完成的事件      console.log(reader.result); // 取得讀取結果并輸出  };

舉例二:給一個含utf-8編碼的文本文件file去掉BOM頭信息

var size = file.size; // 先取得文件總字節數  var result = file.slice(3, size - 3); // 用slice方法去掉開頭的3個字節

***,對FileAPI實踐的三點注意

1. 由于規范尚未截稿,#File.urn尚存較大變數,webkit并未實現此特性

2. #Blob.slice在webkit內核中加入了前綴,即#Blob.webkitSlice,且第二個參數不是“length”,而是“end”,話句話說,上面的示例二應改為file.webkitSlice(3, size)才能生效

3. 規范中還明確規定了各種出錯處理和異常處理,這些內容是同樣重要的:不論對于一套完備的規范,還是對于一個健壯的程序而言。

上述就是小編為大家分享的HTML 5中怎么利用FileAPI對文件進行處理了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河北省| 高邑县| 鲜城| 红安县| 易门县| 麻江县| 通化县| 论坛| 北碚区| 柳州市| 慈溪市| 和顺县| 宁蒗| 汉寿县| 张北县| 鄢陵县| 久治县| 莱州市| 阳西县| 伊宁市| 甘南县| 伊川县| 广元市| 资阳市| 天津市| 桐乡市| 揭东县| 新蔡县| 海口市| 南充市| 兴宁市| 连城县| 汪清县| 呼伦贝尔市| 阳泉市| 汾西县| 新竹市| 淮阳县| 临安市| 镇安县| 玉山县|