FileReader實現上傳圖片前本地預覽

  平時作圖片上傳預覽時若是沒有特殊的要求就直接先把圖片傳到後臺去,成功以後拿到URL再渲染到頁面上。或者使用前端插件。這篇博客使用的是HTML5的新特性——FileReader。因爲兼容性,這種方法不適合pc端...FileReader具體的兼容性點這裏:FileReader兼容性css

  自從有了HTML5的FileReader對象之後,預覽圖片變得簡單多了,再也不須要後臺的配合,而且JS操做本地文件已經成爲了可能。這種方法的思路是:經過readAsDataURL(file)方法把圖片文件轉成base64編碼,而後把base64編碼替換到預覽圖片的src屬性便可。這篇博文主要講解使用方法,若是想要了解更多關於FileReader對象的,能夠看一下這裏:FileReader詳解。下面分別講解上傳單張和多張的案例:html

 

 1、單張上傳前端

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>上傳單張預覽</title>
</head>
<body>
<div id="wrapper">       
  <input id="fileUpload" type="file" />
  <div id="image-holder"> </div>
</div>
  
  <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
  <script>
  $("#fileUpload").on('change', function () {
 
    if (typeof (FileReader) != "undefined") {
        var image_holder = $("#image-holder");
        image_holder.empty();
 
        var reader = new FileReader();
        reader.onload = function (e) {
            $("<img />", {
                "src": e.target.result,
                "class": "thumb-image"
            }).appendTo(image_holder);
 
        }
        
        reader.readAsDataURL($(this)[0].files[0]);  // url轉base64
    } else {
        alert("你的瀏覽器不支持FileReader.");
    }
  });
  </script>
</body>
</html>

 

二、多張上傳jquery

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>上傳多張預覽</title>
</head>
<body>
<div id="wrapper">       
  <input id="fileUpload" type="file" multiple /><br />
  <div id="image-holder"> </div>
</div>
  
  <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
  <script>
  $("#fileUpload").on('change', function () {
 
   //獲取上傳文件的數量
   var countFiles = $(this)[0].files.length;
 
   var imgPath = $(this)[0].value;
   var extn = imgPath.substring(imgPath.lastIndexOf('.') + 1).toLowerCase();
   var image_holder = $("#image-holder");
   image_holder.empty();
 
   if (extn == "gif" || extn == "png" || extn == "jpg" || extn == "jpeg") {
       if (typeof (FileReader) != "undefined") {
 
           // 循環全部要上傳的圖片
           for (var i = 0; i < countFiles; i++) {
 
               var reader = new FileReader();
               reader.onload = function (e) {
                   $("<img />", {
                       "src": e.target.result,
                           "class": "thumb-image"
                   }).appendTo(image_holder);
               }
 
               reader.readAsDataURL($(this)[0].files[i]); //圖片轉base64
           }
 
       } else {
           alert("你的瀏覽器不支持FileReader!");
       }
   } else {
       alert("請選擇圖像文件。");
   }
  });
  </script>
</body>
</html>

 

參考連接:web

http://www.cnblogs.com/tandaxia/p/5125275.html瀏覽器

http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/201706224590.htmlapp

相關文章
相關標籤/搜索