HTML5學習之FileReader介面
阿新 • • 發佈:2019-02-19
用來把檔案讀入記憶體,並且讀取檔案中的資料。FileReader介面提供了一個非同步API,使用該API可以在瀏覽器主執行緒中非同步訪問檔案系統,讀取檔案中的資料。到目前文職,只有FF3.6+和Chrome6.0+實現了FileReader介面。
1、FileReader介面的方法
FileReader介面有4個方法,其中3個用來讀取檔案,另一個用來中斷讀取。無論讀取成功或失敗,方法並不會返回讀取結果,這一結果儲存在result屬性中。
方法名 | 引數 | 描述 |
---|---|---|
readAsBinaryString | file | 將檔案讀取為二進位制編碼 |
readAsText | file,[encoding] | 將檔案讀取為文字 |
readAsDataURL | file | 將檔案讀取為DataURL |
abort | (none) | 終端讀取操作 |
2、FileReader介面事件
FileReader介面包含了一套完整的事件模型,用於捕獲讀取檔案時的狀態。
事件 | 描述 |
onabort | 中斷 |
onerror | 出錯 |
onloadstart | 開始 |
onprogress | 正在讀取 |
onload | 成功讀取 |
onloadend | 讀取完成,無論成功失敗 |
3、FileReader介面的使用
- <scripttype="text/javascript">
-
var result=
- var file=document.getElementById("file");
- //判斷瀏覽器是否支援FileReader介面
- if(typeof FileReader == 'undefined'){
- result.InnerHTML="<p>你的瀏覽器不支援FileReader介面!</p>";
- //使選擇控制元件不可操作
- file.setAttribute("disabled","disabled");
- }
-
function readAsDataURL(){
- //檢驗是否為影象檔案
- var file = document.getElementById("file").files[0];
- if(!/image\/\w+/.test(file.type)){
- alert("看清楚,這個需要圖片!");
- return false;
- }
- var reader = new FileReader();
- //將檔案以Data URL形式讀入頁面
- reader.readAsDataURL(file);
- reader.onload=function(e){
- var result=document.getElementById("result");
- //顯示檔案
- result.innerHTML='<img src="' + this.result +'" alt=""/>';
- }
- }
- function readAsBinaryString(){
- var file = document.getElementById("file").files[0];
- var reader = new FileReader();
- //將檔案以二進位制形式讀入頁面
- reader.readAsBinaryString(file);
- reader.onload=function(f){
- var result=document.getElementById("result");
- //顯示檔案
- result.innerHTML=this.result;
- }
- }
- function readAsText(){
- var file = document.getElementById("file").files[0];
- var reader = new FileReader();
- //將檔案以文字形式讀入頁面
- reader.readAsText(file);
- reader.onload=function(f){
- var result=document.getElementById("result");
- //顯示檔案
- result.innerHTML=this.result;
- }
- }
- </script>
- <p>
- <label>請選擇一個檔案:</label>
- <inputtype="file"id="file"/>
- <inputtype="button"value="讀取影象"onclick="readAsDataURL()"/>
- <inputtype="button"value="讀取二進位制資料"onclick="readAsBinaryString()"/>
- <inputtype="button"value="讀取文字檔案"onclick="readAsText()"/>
- </p>
- <divid="result"name="result"></div>