之前介紹過 Data URL
而這篇文章將補充一個常見的應用場景:圖片預覽
先說明實現圖片預覽的主要流程:
- 根據 input 元素 來上傳圖片
- 根據 FileReader 物件來讀取圖片的 Data URL
- 根據 Data URL 將圖片顯示在畫面上
根據 input 元素 來上傳圖片
內文以 JSX 為範例:
| 1 | <label htmlFor="file-upload"> | 
這裡用了一個小技巧隱藏原本的 input 欄位
並以 label 的點擊來觸發 input 的點擊效果(for 屬性可以觸發相同 id)
備註:JSX 的 for 屬性需要寫成 htmlFor
當選取圖片上傳便會觸發 onChange
根據 FileReader 物件來讀取圖片的 Data URL
| 1 | function handleFileInputChange(event) { | 
基本上就是根據迴圈 搭配 FileReader 讀取每個檔案的 Data URL
並根據 setPhotoList 將轉換好的 URL 陣列放入 photoList 來重新渲染視圖
如果有防呆邏輯也可以在這裡加上(如上傳圖片數量限制等等…)
根據 Data URL 將圖片顯示在畫面上
| 1 | {photoList.map((url, index) => { | 
最後一步很單純
在專案需要的地方將 photoList 給渲染出來就好了
本文作者: David Huang
本文地址: https://davidblog.github.io/2023/07/12/fileReader/