2013年2月3日 星期日

HTML5 File API 讀取檔案內容

以下示範選取使用者端圖檔後,使用FileReader讀取圖檔並顯示在畫面上,
這應該可以用在圖檔上傳前的預覽上。
(註:在IE9上測試不支援,IE10看說明似乎有支援,Firefox和Chrome則都有支援)
<!DOCTYPE html >
<html>
<head>
<script>
function aa() {
    var file = document.getElementById('ff').files[0];
    //console.dir(file);
    if (file) {
        var msg = [];
        msg.push('檔名:' + file.name
             , '大小:' + file.size
             , '檔案類型:' + file.type
             , '修改日期:' + file.lastModifiedDate.toLocaleDateString()
            );
        document.getElementById('msg').innerHTML = msg.join("<"+"br"+">");
        
        //讀取檔案
        var fileReader = new FileReader();
        fileReader.onload = function(event){//讀取完後執行的動作
            //console.dir(event);
            document.getElementById('xx').src = event.target.result;
        };
        fileReader.readAsDataURL(file);//讀取檔案內容,以DataURL格式回傳結果
        
        //fileReader.readAsText(file, 'UTF-8');
    }
}
</script>
</head>
<body>
<input type=file id="ff" onchange="aa()"/>
<div id="msg"></div>
<img id="xx" src="" />
</body>
</html> 

File的屬性

  • 檔名:file.name
  • 大小:file.size
  • 檔案類型:file.type
  • 修改日期:file.lastModifiedDate

 

FileReader讀取檔案的方式

  • readAsDataURL:讀取檔案內容,以DataURL格式回傳結果。例 readAsText(file)
  • readAsText:讀取檔案內容,以文字格式回傳結果。例 readAsText(file, 'UTF-8')
  • readAsBinary:讀取檔案內容,以二進位字串格式回傳結果。例 readAsText(file)
  • readAsArrayBuffer:讀取檔案內容,以陣列緩衝格式回傳結果。例 readAsText(file)
相關連結:
HTML5 File API 讀取檔案的觸發事件(event)

沒有留言:

張貼留言