项目中常用到文件上传预览功能,整理一下:如果不想使用 type="file" 的默认样式,可以让其覆盖在一个按钮样式上边,设其透明度为0,或者使用Label关联
html
<div> ????<div class="figure-box" id="figure_box"></div> ?????<input type="file" id="imgUploadBtn" /> ?????????????<label for="imgUploadBtn" onclick="addWork.add(‘imgUploadBtn‘,‘figure_box‘)">上传</label></div>
<script> ???????var addWork = { ???????????add: function(btn, figure_box) { ???????????????var figureBox = document.getElementById(figure_box); //获取显示图片的div元素 ????????????????var input = document.getElementById(btn); //获取选择图片的input元素 ????????????????//这边是判断本浏览器是否支持这个API。 ????????????????if (typeof FileReader === ‘undefined‘) { ???????????????????alert("浏览器版本过低,请先更新您的浏览器~"); ???????????????????input.setAttribute(‘disabled‘, ‘disabled‘); ???????????????} else { ???????????????????input.addEventListener(‘change‘, readFile, false); ???????????????????//如果支持就监听改变事件,一旦改变了就运行readFile函数。 ????????????????} ???????????????function readFile() { ???????????????????var file = this.files[0]; //获取file对象 ????????????????????//判断file的类型是不是图片类型。 ????????????????????if (!/image\/\w+/.test(file.type)) { ???????????????????????alert("请上传一张图片~"); ???????????????????????return false; ???????????????????} ???????????????????var reader = new FileReader(); //声明一个FileReader实例 ????????????????????reader.readAsDataURL(file); //调用readAsDataURL方法来读取选中的图像文件 ????????????????????//最后在onload事件中,获取到成功读取的文件内容,并以插入一个img节点的方式显示选中的图片 ????????????????????reader.onload = function(e) { ??????????????????????????????????var figure = $(‘<img src="‘ + this.result + ‘" />‘);
???????????????????????figure.appendTo(figureBox); ???????????????????} ???????????????} ???????????} ???????} </script>
h5图片上传预览
原文地址:https://www.cnblogs.com/tizi/p/8695880.html