JQ实现图片预览

实现图片预览在于修改图片的src,而且写成图片的本地路径是没有用的。

实现效果:

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中存放了选中的文件的二进制数据
        $('#avatar_img')[0].src = this.result
    }
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,805评论 1 92
  • <a name='html'>HTML</a> Doctype作用?标准模式与兼容模式各有什么区别? (1)、<...
    clark124阅读 3,555评论 1 19
  • 如果要评选90后文艺青年最爱的导演,新海诚一定榜上有名。 他在天朝流传最广的作品就是那部虐哭无数人的《秒速5厘米》...
    Mark我的电影清单阅读 1,549评论 0 15
  • 我们每天都会吃很多不同的食物,但是身体却发现没有健康起来。那么该怎样吃才能够保持身体的健康呢?注意以下几点,并且长...
    天道ZT阅读 364评论 0 1