使用FileReader實現前端圖片預覽


  在FileReader出現之前,前端的圖片預覽是這樣實現的:把本地圖片上傳到服務器,服務器把圖片地址返回,並把它替換到圖片元素的src屬性。
  這種方法的缺點是:必須要先把圖片上傳到服務器。那么問題來了,如果上傳的圖片很大,而網速又很慢,這就需要等待很久預覽圖片才會顯示出來了,而且,如果用戶預覽圖片后發現不太滿意,想重新選擇一張圖片,這時候還要把已經上傳到服務器上的圖片給刪除掉。
  自從有了HTML5的FileReader對象以后,預覽圖片變得簡單多了,不再需要后台的配合,並且JS操作本地文件已經成為了可能。這種方法的思路是:通過FileReader.prototype.readAsDataURL()方法把圖片文件轉成base64編碼,然后把base64編碼替換到預覽圖片的src屬性即可。如果想要了解更多關於FileReader對象的,可以看一下這里: FileReader https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader
  下面是使用FileReader進行圖片預覽的簡單demo:
 1 <!doctype html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <title>Document</title>
 6 </head>
 7 <body>
 8 <input type="file"><br>
 9 <img src="" height="200" alt="Image preview area..." title="preview-img">
10 <script>
11   var fileInput = document.querySelector('input[type=file]'),
12           previewImg = document.querySelector('img');
13   fileInput.addEventListener('change', function () {
14       var file = this.files[0];
15       var reader = new FileReader();
16       // 監聽reader對象的的onload事件,當圖片加載完成時,把base64編碼賦值給預覽圖片
17       reader.addEventListener("load", function () {
18           previewImg.src = reader.result;
19       }, false);
20       // 調用reader.readAsDataURL()方法,把圖片轉成base64
21       reader.readAsDataURL(file);
22   }, false);
23 </script>
24 </body>
25 </html>

  關於圖片預覽的就寫到這里啦,如果哪些地方寫得不對或者問題的,親們可以在評論提出~

  今天是大年初九,也是上班的第一天,新的一年,新的開始,新的期待。祝願親們2017身體健康、代碼無bug!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM