jQuery – JavaScript – 教你如何製作圖片上傳前的預覽圖

* 如果您想要用套件可以來這篇 (2017/03/07更新)

 

目標

  1. 讓使用者在上傳圖片前先顯示在頁面,用來確定是不是要上傳的圖片。
  2. 透過前端技術完成,不使用網路傳輸到伺服器做縮圖後回傳到前端。

解決方法

使用 Web APIs 的 FileReader (檔案讀取器) 來達到。關於 FileReader 的用法,可參考說明

線上測試

HTML

JavaScript/jQuery

解說

當 input.upl[type=file] 發生改變的時候會觸發我們自訂的 preview 方法。

我們看 preview 方法怎麼寫

其中要顯示的檔案大小,會須要做運算的轉換,我們額外包了一個 format_float 的方法

如果須要多圖預覽,請參考進階的 下一篇文章

這邊的範例比較簡單,只能做一張圖片的預覽。

參考


Comments

  1. easonchiu713
    2016-04-24 - 00:33

    你好我是正在學習jquery js的小朋友0.0
    用了您的方法製作後,我為了控制preview image的樣式加了border-radius 可是它卻出現框框 不知道原因>”<?
    是否可以向您請教。
    謝謝!
    http://easondesign.co/%E5%93%81%E5%91%B3%E7%B6%B2%E7%AB%99demo/userupload.html

    • 這部分屬於CSS的部分,可以網路上找找相關資料囉。這部分涉及CSS的一些理念~需要再透別教學了唷

  2. easonchiu713
    2016-04-24 - 01:20

    你好0.0,已解決!雖然不知道為什麼這樣就解決了。
    我原本把max-width 改成只有單純的width,
    但是改回max 那個框框就不見了0.0..

    • 這部分屬於CSS的部分,可以網路上找找相關資料囉。這部分涉及CSS的一些理念~需要再透別教學了唷

  3. 你好!我按照的方法加上了FileReader的圖片預覽
    http://work.applework.com/index.php?route=product/product&product_id=43
    可是上傳檔案的按鈕還是要用AjaxUpload選擇檔案
    請問要如何修改才能變成送出呢?謝謝!

  4. 感謝 幫助很大 @@

  5. 非常感謝分享教學~ 幫助很大, 謝謝~

  6. 感謝分享教學!剛好是我需要的功能
    是否能請教其他相關問題
    上傳後的圖片檔名,有什麼方式可以取得以便於post到後台處理我表單的資料嗎?

  7. 您好 使用您的方法可以成功的顯示
    可是當我有好幾個上傳圖片的資料
    縮圖就無法正常顯示
    會一直抓取”最後一次上傳”的圖片

發表迴響