js FileReader 讀取檔案

2022-07-17 05:12:13 字數 2788 閱讀 5515

前言:filereader是一種非同步檔案讀取機制,結合input:file可以很方便的讀取本地檔案。

在介紹filereader之前,先簡單介紹input的file型別。

input的file型別會渲染為乙個按鈕和一段文字。點選按鈕可開啟檔案選擇視窗,文字表示對檔案的描述(大部分情況下為檔名);file型別的input會有files屬性,儲存著檔案的相關資訊。

點選按鈕上傳乙個檔案後,在控制台列印input.files,如下:

可以發現input.files是乙個陣列,由傳入的file物件組成。每個file物件包含以下屬性:

lastmodified:數值,表示最近一次修改時間的毫秒數;

lastmodifieddate:物件,表示最後一次表示最近一次修改時間的date物件(高程中說是字串,根據上圖可看出應該為物件,為了層級清晰未對其展開,大家可自行檢視,其可呼叫date物件的有關方法,例如getday方法);

name:本地檔案系統中的檔名;

size:檔案的位元組大小;

type:字串,檔案的mime型別;

weblitrelativepath:此處為空;當在input上加上webkitdirectory屬性時,使用者可選擇資料夾,此時weblitrelativepath表示資料夾中檔案的相對路徑。比如:

點選按鈕新增乙個包含3個檔案的名為php的資料夾後,控制台列印inputbox.files,如下:

可看出,此時weblitrelativepath表示當前file物件的檔案在資料夾中的路徑。

以上file物件只獲取到了對檔案的描述資訊,但沒有獲得檔案中的資料,而inputbox.value也只是儲存的是檔案的絕對路徑(這裡就不展示了,大家可以自己試一試)。我們可以通過html5提供的filereader讀取到檔案中的資料。

首先建立乙個filereader例項:

var reader = new filereader();
filereader提供了如下方法:

readasarraybuffer(file)

按位元組讀取檔案內容,結果用arraybuffer物件表示

readasbinarystring(file)

按位元組讀取檔案內容,結果為檔案的二進位制串

readasdataurl(file)

讀取檔案內容,結果用data:url的字串形式表示

readastext(file,encoding)

按字元讀取檔案內容,結果用字串形式表示

abort()

終止檔案讀取操作

readasdataurl和readastext較為常用,這裡只對這兩者進行說明。

readasdataurl會將檔案內容進行base64編碼後輸出:

當讀取操作被中止時呼叫

onerror

當讀取操作發生錯誤時呼叫

onload

當讀取操作成功完成時呼叫

onloadend

當讀取操作完成時呼叫,無論成功或失敗

onloadstart

當讀取操作開始時呼叫

onprogress

在讀取資料過程中週期性呼叫

每過50ms左右,就會觸發一次progress事件,對於較大的檔案可以利用progress實現進度條;onload事件在onloadend之前觸發。

由於種種原因無法讀取檔案時,會觸發error事件。觸發error事件時,相關資訊儲存在filereader物件的error屬性中,這個屬性將儲存乙個物件,此物件只有乙個屬性code,即錯誤碼。1表示未找到檔案,2表示安全性錯誤,3表示讀取中斷,4表示檔案不可讀,5表示編碼錯誤。

如果想中斷讀取過程,可以呼叫abort方法,就會觸發abort事件。

無論觸發load,error,abort事件中哪乙個,最終都會觸發loadend事件。

讀取Structs properties檔案

在這裡我直接返回的是properties物件 這樣更靈活 可以在外部呼叫的時候想哪到properties檔案裡的哪個屬性都行,當然必須要是properties裡存在的。讀取properties檔案 param propertiesname return public static propertie...

python linecache 模組讀取檔案

python linecache 模組讀取檔案用法詳解 linecache 模組允許從任何檔案裡得到任何的行,並且使用快取進行優化,常見的情況是從單個檔案讀取多行。linecache.getlines filename 從名為 filename 的檔案中得到全部內容,輸出為列 式,以檔案每行為列表中...

selenium python讀取XML檔案

在實際的自動化測試場景中,我們的測試資料是沒有規則的,此時我們需要建立乙個xml檔案來存放我們的測試資料。首先這是我們要讀取的xml檔案 windows chorm 北京上海 西安成都 1.獲取標籤資訊 首先要匯入xml的mindom模組,用來處理xml檔案,parse 用於開啟xml檔案。docu...