<input id="file01" type="file" onchange="show02(this)"/>
filename = thisfileinfo.files[0].name;
filesize= thisfileinfo.files[0].size;
filetype= thisfileinfo.files[0].type;
注意:可以複選
function show02(fileinfo) {
file = fileinfo.files[0];
var fReader = new FileReader();
fReader.onload = function (event) {
document.getElementById('txt01').value = event.target.result;
};
fReader.readAsText(file);
}
若要讀取檔案中的內容,可以利用FileReader物件,檔案讀取的動作採非同步方式。要讀取檔案可以利用幾個方法:
File API 在 HTML5 中屬於基礎功能之一,它可以在本地端讀入二進位檔案,並且轉換成 Data URI (文字格式加上 base64 編碼字串的 URL,只要變成了文字樣式,再配合 DOM 的處理,就能將它塞到 DIV,Hidden Field 或其他的地方 (ex: localstorage),也可以將它指定給 img 來顯示等等,用途很廣。
<input type=”file” /> 和 File API 連接起來,
1 | <input type="file" multiple="multiple" id="MyFile" /> |
使用者可以選擇多個檔案,而讀入的檔案在 DOM 內會變成一個稱為 Blob 的項目,我們可以透過 file 的 DOM 物件來瀏覽檔案的清單
Blob 物件有三個屬性可以存取:
如果要上傳的話,我們還需要讀入檔案,這是 HTML5 File API 最厲害的地方,它可以將二進位檔案讀入,但基於安全的理由,讀入的資料會被轉成字串 (base64),而不會讓 JavaScript 去操作二進位資料。讀取資料的物件稱為 FileReader,擁有下列方法:
請注意,在 FileReader 裡面,所有的讀取動作都是非同步的,所以在呼叫 read 方法之前,必須要先掛載一個 onload 的事件常式,以擷取讀取的結果,在事件參數中,使用 result 屬性來取得結果
使用 readAsDataURL() 讀出的檔案內容是這樣:
data:application/vnd.openxmlformats-officedocument.presentationml.presentation ;base64, UEsDBBQABgAIAAAAIQBa...
伺服端的部份則只要可以解出 base64 的資料就可以了,ASP.NET 可用 Convert.FromBase64String(),將 base64 的部份拆出來後直接轉,但要注意的是 Data URI 會將 “+” 變成空白字元 (傳輸時的相容性),所以在解碼前要先將所有的空白字元轉換成 “+”,否則會解碼失敗。
除了 onload 以外,FileReader 還有下列事件可用:
FileReader屬性
error 唯讀 讀取文件時發生的錯誤
readyState 唯讀 顯示目前FileReader狀態 EMPTY==0 LOADING==1 DONE==2
result 唯讀 讀取到的文件内容.該屬性只在讀取操作完後才有效,數據格式依讀取操作方式而不同
FileReader 包含四個非同步讀取文件的方法: