1、FileReader概述
FileReader 對(duì)象允許Web應(yīng)用程序異步讀取存儲(chǔ)在用戶計(jì)算機(jī)上的文件(或原始數(shù)據(jù)緩沖區(qū))的內(nèi)容,使用 File
或 Blob
對(duì)象指定要讀取的文件或數(shù)據(jù)。
其中File對(duì)象可以是來自用戶在一個(gè)<input>
元素上選擇文件后返回的FileList
對(duì)象,也可以來自拖放操作生成的DataTransfer
對(duì)象,還可以是來自在一個(gè)HTMLCanvasElement
上執(zhí)行mozGetAsFile()方法后返回結(jié)果
。
2、FileReader接口方法
方法名 | 參數(shù) | 描述 |
readAsBinaryString | file | 將文件讀取為二進(jìn)制碼 |
readAsText | file,[encoding] | 將文件讀取為文本 |
readAsDataURL | file | 將文件讀取為DataURL |
readAsArrayBuffer | file | 將文件讀取為ArrayBuffer對(duì)象 |
abort | (none) | 中斷讀取操作 |
3、FileReader接口事件
事件 | 描述 |
onabort | 數(shù)據(jù)讀取中斷時(shí)觸發(fā) |
onerror | 數(shù)據(jù)讀取出錯(cuò)時(shí)觸發(fā) |
onloadstart | 數(shù)據(jù)讀取開始時(shí)觸發(fā) |
onprogress | 數(shù)據(jù)讀取中 |
onload | 數(shù)據(jù)讀取成功完成時(shí)觸發(fā) |
onloadend | 數(shù)據(jù)讀取完成時(shí)觸發(fā),無論成功失敗 |
4、使用實(shí)例
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Html5Test</title> </head> <body> <article> <header></header> <section> <p> <lable>請(qǐng)選擇一個(gè)文件:</lable> <input type="file" id="file_reader"> <input type="button" value="讀取圖像" onclick="readAsDataUrl();"> <input type="button" value="讀取二進(jìn)制數(shù)據(jù)" onclick="readAsBinaryString();"> <input type="button" value="讀取文本文件" onclick="readAsText();"> </p> <p id="file_reader_result" name="file_reader_result"> <!-- 這里用來顯示讀取結(jié)果 --> </p> <script> var file_reader_result = document.getElementById("file_reader_result"); // 檢測瀏覽器是否支持FileReader if (typeof FileReader == "undefined") { file_reader_result.innerHTML = "您的瀏覽器不支持FileReader"; file.setAttribute('disabled', 'disabled'); } // 將文件以Data Url形式讀入頁面 function readAsDataUrl(){ // 檢查是否為圖像文件 var f = document.getElementById("file_reader").files[0]; if (!/image/w+/.test(f.type)) { file_reader_result.innerHTML = "請(qǐng)上傳圖片文件!"; return false; }; var reader = new FileReader(); // 將文件以Data Url形式讀入頁面 reader.readAsDataURL(f); reader.onload = function(e){ file_reader_result.innerHTML = '<img src="' + this.result + '" alt="圖片" />'; } } // 將文件以二進(jìn)制形式讀入頁面 function readAsBinaryString(){ // 檢查是否為圖像文件 var f = document.getElementById("file_reader").files[0]; if (!/image/w+/.test(f.type)) { file_reader_result.innerHTML = "請(qǐng)上傳圖片文件!"; return false; }; var reader = new FileReader(); // 將文件以二進(jìn)制形式讀入頁面 reader.readAsBinaryString(f); reader.onload = function(e){ file_reader_result.innerHTML = this.result; } } // 將文件以文本形式讀入頁面 目前測試僅支持txt文件 function readAsText(){ // 檢查是否是文本文件 var f = document.getElementById("file_reader").files[0]; if (!/text/w+/.test(f.type)) { file_reader_result.innerHTML = "請(qǐng)上傳文本文件!"; return false; }; var reader = new FileReader(); // 將文件以文本形式讀入頁面 reader.readAsText(f); reader.onload = function(e){ file_reader_result.innerHTML = this.result; } } </script> </section> </article> </body> </html>