JavaScript中的文件操作

上傳文件的唯一控件.

值得注意的是:如果是一個表單包含了這一控件,那麼表單的enctype屬性必須爲multipart/form-data,method屬性必須爲post瀏覽器才正確編碼並以multipart/form-data格式發送。

使用該控件上傳文件時,js也無法獲取該文件的真實路徑。
js可以在提交表單時對文件拓展名進行檢查,防止用戶上傳無效文件。

File API
js的文件操作十分有限,而且無法讀取文件內容,在HTML5中的File API提供了File和FileReader這兩個對象,可以獲取文件信息並讀取文件。

下面是一個例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test</title>
    <style>
        #show{
            width:500px;
            height:300px;
            border:1px solid #ff0000;
        }
    </style>
    <script>
window.onload=function() {
    var filein = document.getElementById('file1'),
        infor = document.getElementById('info'),
        showbox = document.getElementById('show');
    //監聽change事件
    filein.addEventListener('change',function () {
        //清除showbox的背景圖
        showbox.style.backgroundImage = '';
        //檢查文件是否選擇
        if (!filein.value) {
            infor.innerHTML = '沒有選擇文件';
            return;
        }
        //獲取文件引用
        var file = filein.files[0];
        //獲取文件信息
        infor.innerHTML = '文件' + file.name + '<br>' +
            '大小' + file.size + '<br>' +
            ' 修改日期' + file.lastModifiedDate;
        if (file.type !== 'image/jpeg' && file.type !== 'image/png' && file.type !== 'image/gif') {
            alert('不是有效的圖片文件!');
            return;
        }
        //讀取文件
        var reader = new FileReader();
		//設置一個回調函數,等待讀取結束後調用
        reader.onload = function (e) {
            var data = e.target.result;
            showbox.style.backgroundImage = 'url(' + data + ')';
        };
        //以url方式讀取文件
        reader.readAsDataURL(file);
    });

}
    </script>
</head>
<body>
<p >圖片信息:<br></p>
<div id="info"></div>
<div id="show" ></div>
<form action="">
    <input type="file" id="file1" >
</form>
</body>
</html>
上面的代碼演示了怎麼通過HTML5的FileAPI讀取文件內容。

使用DataURL格式督導的文件是一個字符串類似於data:image/png;base64,/9j/4AAQSk...(base64編碼)...,常用於設置圖像,如果需要服務端處理,將字符串base64後面的字符發送到服務器解碼就可以獲得源文件的二進制內容。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章