FileReader這個對象,平時可能不會怎么接觸,因為它不是很常用,但畢竟是H5的東西,多少還是知道它是做什么的。今天就來介紹一下FileReader是做什么用的,以及該對象相關屬性和方法。
FileReader對象可以異步讀取文件里的數據。對,你沒有聽錯,就是文件里的數據,不過不能直接讀取文件里的內容,它只能讀取Blob和File對象里存儲的文件數據。
FileReader提供的屬性有:
error屬性會返回數據讀取時的錯誤信息。
onload屬性是一個事件屬性,它會在讀取文件方式為readAsArrayBuffer、readAsBinaryString、readAsDataURL或readAsText的時候,這個事件會觸發。
readState屬性會返回讀取文件操作時的狀態。
result屬性回返回文件里的內容,當然這個屬性只有讀取成功並結束之后,才能可以用。
FileReader提供的方法有:
abort方法會取消FileReader的讀取操作,觸發之后readeState的狀態會變為已完成。
readAsArrayBuffer方法會讀取數據內容,並以ArrayBuffer的形式返回,返回后會觸發一個loadend事件,並且readState的狀態會變為已完成。方法接收一個Blob和File對象作為參數。
readAsBinaryString方法會把讀取的Blob和File對象以二進制的形式返回,其它與readAsArrayBuffer方法相同。不過這個方法並不是標准的,所以盡量不要去使用它。
readAsDataURL方法會把讀取的Blob和File對象以data:URL的形式返回,其它與readAsArrayBuffer方法相同。
readAsText方法會把讀取的Blob和File對象以特殊編碼形式的字符串返回,除了多了個指定編碼格式字符串,其它與readAsArrayBuffer方法相同。不過這個方法是異步的,因此需要通過onload和loadend事件來進行監聽。
FileReader提供的事件有:
loadstart事件數據開始讀取時觸發。
progress事件
abort事件當數據讀取停止時觸發。
error事件當數據讀取發生異常的時候會觸發。
load事件當讀取數據完成以后的時候會完成。
loadend事件當讀取數據結束的時候會觸發。
FileReader對象的介紹結束了。我能知道FileReader對象,也是在用Nodejs寫文件上傳的時候,不知道該怎么給后台發送數據的時候,通過查找資料才直到,不過可惜的是,最后也沒有用到這個對象。因為把數據讀取出來之后,然后添加到FormData中傳送給后台,后台讀取數據的時候,出現了點問題。NodeJs沒有提供內置的解析FormData數據的模塊,需要用第三方提供的模塊,來進行解析。后來用了第三方的插件,發現沒有必要再用這個對象專門把數據讀取出來,也就沒有在用。