js如何实现图片预览
介绍
很多新手玩家对于文件读取,图片读取都是只知皮毛,今天就给大家讲讲如何实现图片预览,实现方式有两种。
file对象转URL
为什么要转URl, 图片不能直接显示本地路径,会提示报错,所以我们要将file转成URL路径去赋值给img,直接上代码:
<html>
<head>
<title>Title</title>
</head>
<body>
<hr/>
<br/>
<input type="file" id="myFile1"/>
<img src="" id="preview_img" width="400px" height="400px" alt="">
<script src="${pageContext.request.contextPath}/js/jquery-1.12.3.js"></script>
<script>
$("#myFile1").change(function () {
//创建blob对象,浏览器将文件放入内存中,并生成标识
var img_src = URL.createObjectURL($(this)[0].files[0]);
//给img标检的src赋值
document.getElementById("preview_img").src=img_src;
//URL.revokeObjectURL(img_src);// 手动 回收,
});
</script>
</body>
</html>
file对象转base64格式地址
这种做法相对消耗性能,不过对于数量较少的情况可以采用该办法,得到的结果为:
data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==
<html>
<head>
<title>Title</title>
</head>
<body>
<hr/>
<br/>
<input type="file" id="myFile1"/>
<img src="" id="preview_img" width="400px" height="400px" alt="">
<script src="${pageContext.request.contextPath}/js/jquery-1.12.3.js"></script>
<script>
$("#myFile1").change(function () {
var fileReader = new FileReader();
fileReader.readAsDataURL($(this)[0].files[0]);
//异步加载
fileReader.onload =function (event) {
$("#preview_img").attr("src",event.target.result);
}
});
</script>
</body>
</html>
总结
无论你选择用哪一种,都是不错的选择,毕竟网页端的局限性较大,无法和node环境相提并论,如果你支持nodejs,可以导入fs模块进行读取,那样是最完美的解决方案,希望对各位有帮助。