input type=''file''美化 及 文件上传img src显示问题
2017-09-21 15:43
330 查看
原始界面 展示界面 非图片格式界面
为了实现上图的功能,点击“请选择商品图片”,然后就能选择电脑里的图片并在方框里显示出来,如果不是图片格式,提示报错。
主体部分(主要是为了展示)
<div class="Food_img">
<span>商品照片</span>
<div class="Food_addImg" id="Food_addImg">
<img src="" alt="">
</div>
</div>
<span class="msg"></span>
<div class="tip">请选择商品图片
<input type="file" id="file_input">
</div>
样式
为了清除input 默认样式的影响,设置了opacity=0;这样就能用外层的div来做显示,这样就不用考虑每个浏览器对input的显示问题。
.Food_img{
width: 100%;
background-color: #fff;
padding: 10px;
}
.Food_img>div{
width: 78px;
height: 78px;
border: 1px solid #ddd;
margin-top: 10px;
line-height: 78px;
text-align: center;
}
#Food_addImg>img{
width: 100%;
height: 100%;
}
.msg{
font-size: 15px;
color: red;
padding-left: 5px;
}
.tip{
position: relative;
margin-top: 4px;
margin-left: 4px;
}
.tip>#file_input{
position: absolute;
top: 0;
left: -120px;
z-index: 3;
opacity: 0;
}JS部分
var input = document.getElementById("file_input");
var img = document.getElementsByTagName("img")[0];
var imageType = /image.*/; //为了进行正则检验,看格式是否正确,也可以用var patn = /\.jpg$|\.jpeg$|\.gif$|\.png$/i;
var msg = document.getElementsByClassName("msg")[0];
var getOnloadFunc = function(aImg) {
return function(evt) {
aImg.src = evt.target.result; //得到input里面上传的文件地址,简单来讲文件地址就是input.value
};
}
input.addEventListener("change", function(evt) {
for (var i = 0, numFiles = this.files.length; i < numFiles; i++) { //有多张图片一起,需要遍历
var file = this.files[0];
if (!file.type.match(imageType)) { //如果使用的是path参数,这里应该变成patn.test(input.value)
msg.innerHTML = "您选择的似乎不是图像文件,"; //当格式错误时,有一个错误提示
continue ; //如果只有单张图片,不需要循环,可以用return代替
}
msg.innerHTML = "";
var reader = new FileReader();
reader.onload = getOnloadFunc(img);
reader.readAsDataURL(file);
}
}, false);
相关文章推荐
- html的img中使用SVG图片做SRC在本地测试可用但是上传服务器后不能显示问题解决 标签: SVGMIME TYPE不显示服务器设置 2016-05-21 13:49 2517人阅读 评论(0)
- HMTL中文件标签上传文件错误的问题(input type=file)
- 解决美化后的文件上传控件(type=file),IE和firefox不兼容的问题
- input type='file' 上传文件时显示文件名及上传进度
- Extjs中用dwr实现文件上传时,fileuploadfield不能正常显示的问题
- html的img中使用SVG图片做SRC在本地测试可用但是上传服务器后不能显示问题解决
- Tag:input type='file' 的文件长度问题
- django ImageField,FileField,上传文件,命名问题
- Struts2中文件过大上传失败问题解决方案org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException
- 使用input type=file 上传文件时需注意
- struts中post方式上传文件,enctype="multipart/form-data",request.getParameter("file") 是null的问题分析
- 使用input type=file 上传文件时需注意
- Js中清空文件上传字段(input type=file )
- Js中清空文件上传字段(input type=file )
- 解决javascript动态改变img的src属性图片不显示问题
- 研究了三天的文件上传(jspsmart实现)file和text表单同时提交的问题
- 【翻译】Styling an input type="file"美化文件上传控件
- ASP.NET上传大文件出现网页无法显示的问题
- Js中清空文件上传字段(input type=file )
- 【翻译】Styling an input type="file"美化文件上传控件