前端js實現圖片上傳預覽
阿新 • • 發佈:2019-01-02
前端js實現圖片上傳
前端js實現圖片上傳的原理是通過input標籤的type=file屬性將input標籤定義為上傳檔案,對input進行onchange事件的監聽,當input的value值改變時代表使用者已經上傳了圖片,而input的value值就是使用者上傳的圖片的相對路徑,new一個FileReader物件,將圖片轉換成base64格式的編碼,動態建立img標籤並將轉換後的編碼賦值給img標籤的src屬性即可。
首先,進行頁面佈局,頁面佈局是用的浮動佈局。
<div class="content clearFlex"> <form action="" enctype="multipart/form-data"> <div class="upImg clearFlex"> <div class="imgOnloadWrap"></div> <div class="upWrap"> <div class="fileWrap"> <input type="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" onchange="upImg(this)"/> </div> <div class="imgWrap"> <img src="img/icon6.png" alt="" /> </div> </div> </div> </form> </div>
其次對頁面佈局進行樣式設計
.content{ width:1000px; height: 800px; background:#fff; border-radius:10px; padding:10px; overflow-y: scroll; margin:0 auto; border:1px solid #333; border-color:rgba(169,169,169,1); } .upWrap{ width:140px; height: 80px; margin:10px; float: left; position: relative; } .upWrap > .fileWrap,.upWrap > .fileWrap > input[type=file],.upWrap > .imgWrap{ position: absolute; height: 100%; width:100%; top:0; left:0; } .upWrap > .fileWrap > input[type=file]{ z-index: 2; opacity: 0; } .upWrap > .imgWrap{ z-index: 1; } .upWrap > .imgWrap > img{ width:100%; height: 100%; } .upedImg{ z-index: 3 !important; } .upedImg > span.deleteImg{ position:absolute; content: 'X'; width:20px; font-size: 16px; color:#ff0000; background:rgba(0,0,0,0.6); height:20px; text-align: center; line-height: 20px; right:0; top:0; z-index:4; } .clearFlex:after{ clear: both; content: ''; display: block; height: 0; zoom:1; }
最後對上傳圖片進行邏輯互動
/*------------------------------上傳圖片---------------------------*/ function upImg(obj){ var imgFile = obj.files[0]; console.log(imgFile); var img = new Image(); var fr = new FileReader(); fr.onload = function(){ var htmlStr = '<div class="upWrap">'; htmlStr += '<div class="fileWrap">'; htmlStr += '<input type="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" onchange="upImg(this)"/>'; htmlStr += '</div>'; htmlStr += '<div class="imgWrap upedImg"><span class="deleteImg">X</span>'; htmlStr += '<img src="'+fr.result+'" alt="" />'; htmlStr += '</div>'; htmlStr += '</div>'; $('.imgOnloadWrap').append(htmlStr); obj.value = ''; } fr.readAsDataURL(imgFile); } /*-----------------------------刪除圖片------------------------------*/ $(document).on('click','.upedImg .deleteImg',function(){ //處理未來事件 $(this).parent().parent().remove(); })