function handleFiles(files) { for (var i = 0; i < files.length; i++) { var file = files[i]; var imageType = /image.*/; if (!file.type.match(imageType)) { continue; } var img = document.createElement("img"); img.classList.add("obj"); img.file = file; preview.appendChild(img); var reader = new FileReader(); reader.onload = (function(aImg) { return function(e) { aImg.src = e.target.result; }; })(img); reader.readAsDataURL(file); } }
這邊迴圈處理了使用者選取的每個檔案並檢查每個檔案的類型是不是圖檔(藉由使用正規表達式檢查是否符合字串 "image.*")。每一個是圖片的檔案,我們創建一個
img
元素。CSS 被使用來美化外框、陰影、還有設定圖片的尺寸,所以那些並不需要在這邊寫入。
為了使圖片可以在DOM裡面更容易被找到,所以每個圖片都有設定CSS class “obj”。 我們也在每個圖檔標記
file
屬性以辨認 File
;這使我們更容易取得真正要上傳的圖檔。最後我們使用Node.appendChild()
在文件中增加縮圖的元素。FileReader
處理要非同步讀取的圖檔並跟 img
元素連接。在創建 FileReader
物件後,我們設置了 onload
並 呼叫 readAsDataURL()
在背景呼叫讀取的程序。當所有圖檔都被讀取時,他們被轉換為傳到 onload callback 的
data
URL。 這個範例簡易的設置img
元素的 src
屬性來讀取圖檔並在螢幕上顯示。