FileReader物件
了解什麼是FileReader物件以及如何使用它
FileReader物件以非同步方式讀取檔案的內容。
它提供了四個讀取方法,可以用來開始讀取過程:
readAsText()
:以文字字串形式讀取內容readAsDataURL()
:將內容以數據URL形式讀取readAsArrayBuffer()
:將內容讀取為ArrayBuffer
readAsBinaryString()
:以二進制字串形式讀取內容
另外還有一個abort()
方法,用來停止任何的讀取操作。
讀取檔案是非同步的,該物件還提供了一些事件,我們可以利用這些事件來追蹤操作的進度:
onload
:當讀取成功結束時觸發onloadstart
:當讀取開始時觸發onprogress
:當讀取進行中時觸發onloadend
:無論讀取是否成功結束都會觸發onerror
:當發生錯誤時觸發onabort
:當讀取被中止時觸發
一旦讀取操作完成,FileReader物件的result
屬性將包含檔案的內容。
error
屬性包含錯誤訊息(如果有錯誤發生),而readyState
則包含操作的狀態編號。狀態編號為:
0
:未載入任何資料1
:資料載入中2
:載入完成
readAsText()
以文字字串形式載入blob的內容。
以下是一個範例,將文字放入#content
元素的內部HTML:
1 | //..file is available as a blob |
以下是一個範例,當使用input
元素上傳文本檔時,讀取檔案內容並將內容打印到控制台:
1 | <input type="file" allow="text/*" /> |
1 | const input = document.querySelector('input') |
readAsDataURL()
將blob的內容以數據URL形式讀取。
以下是一個範例,將內容以數據URL形式設定到#image
元素的src屬性:
1 | //..file is available as a blob |
readAsArrayBuffer()
將blob的內容讀取為ArrayBuffer
。
以下是一個範例,將內容讀取為ArrayBuffer
並創建一個Int32Array
:
1 | //..file is available as a blob |
tags: [“FileReader”, “asynchronous”, “read methods”]