本篇文章更新時間:2019/02/16
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


前端實作表單如果有碰到需要上傳圖片幾乎都會有這需求:預覽。

作法有跟後端搭配,同步 AJAX 上傳後回傳連結套入預覽,或是今天這主題純前端搞定!

使用 JavaScript FileReader API 要注意瀏覽器支援度,尤其是 IE.. ,不過整體來說支援度都還不錯。

FileReader API 瀏覽器支援度

HTML 結構:


Image preview...

JavaScript 程式:

function previewFile() {
  var preview = document.querySelector('img');
  var file    = document.querySelector('input[type=file]').files[0];
  var reader  = new FileReader();

  reader.addEventListener("load", function () {
    preview.src = reader.result;
  }, false);

  if (file) {
    reader.readAsDataURL(file);
  }
}

解讀起來也不難,從輸入的 file 類別捕捉「改變」事件然後實作這 onchange 事件。程式中先是建立一個 FileReader 物件後,再監聽待會檔案的「讀取」事件,都準備好後就使用 FileReader 物件進行讀取,讀取的時候因為使用 readAsDataURL 方法,所以會輸出用 base64 編碼過的字串圖片資料,直接帶入 img 標籤中顯示。

短短幾行就能實作純前端版本的預覽功能,速度也是比較快,省的資料還要先傳輸到後端處理過再回傳的溝通問題,如果瀏覽器不支援可以選擇乾脆不預覽或是與後端打組合技了~


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon