JQ實現(xiàn)圖片預覽

實現(xiàn)圖片預覽在于修改圖片的src,而且寫成圖片的本地路徑是沒有用的。

實現(xiàn)效果:

image.png

html部分:

<label for="avatar" class="col-sm-3 control-label">頭像:</label>
<div class="col-sm-9" id="avatar">
    <img src="/static/img/guojia.jpg" alt="" id="avatar_img">
    <input type="file" class="form-control" id="avatar_file">
</div>

css部分:
通過絕對定位將默認圖片和文件按鈕重疊,并將文件按鈕隱藏

#avatar{
    position: relative;
    width: 60px;
    height: 60px;
}

#avatar_img,#avatar_file{
    position: absolute;
    top: 0;
    left: 15px;
    width: 60px;
    height: 60px;
    border: 1px solid gray;
    border-radius: 5px;
}

#avatar_file{
    opacity: 0; 
}

jquery部分:
方式一:

//建立一個可存取到該file的url
function getObjectURL(file) {
    var url = null ;
    if (window.createObjectURL!=undefined) { // basic
        url = window.createObjectURL(file) ;
    } else if (window.URL!=undefined) { // mozilla(firefox)
        url = window.URL.createObjectURL(file) ;
    } else if (window.webkitURL!=undefined) { // webkit or chrome
        url = window.webkitURL.createObjectURL(file) ;
    }
    return url ;
}

//圖片預覽
$("#avatar_file").on("change",function(){
    var objUrl = getObjectURL(this.files[0]) ; //獲取圖片的路徑,該路徑不是圖片在本地的路徑
    if (objUrl) {
        $("#avatar_img").attr("src", objUrl) ; //將圖片路徑存入src中,顯示出圖片
    }
});

方式二:

//頭像預覽
$('#avatar_file').change(function () {
    var file = $(this)[0].files[0];
    //通過FileReader讀取選中圖片
    var reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = function () {
        //result中存放了選中的文件的二進制數(shù)據(jù)
        $('#avatar_img')[0].src = this.result
    }
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,805評論 1 92
  • <a name='html'>HTML</a> Doctype作用?標準模式與兼容模式各有什么區(qū)別? (1)、<...
    clark124閱讀 3,555評論 1 19
  • 如果要評選90后文藝青年最愛的導演,新海誠一定榜上有名。 他在天朝流傳最廣的作品就是那部虐哭無數(shù)人的《秒速5厘米》...
    Mark我的電影清單閱讀 1,549評論 0 15
  • 我們每天都會吃很多不同的食物,但是身體卻發(fā)現(xiàn)沒有健康起來。那么該怎樣吃才能夠保持身體的健康呢?注意以下幾點,并且長...
    天道ZT閱讀 364評論 0 1