大部分转自:http://blog.csdn.net/qq_39200924/article/details/79198766
在项目中经常用到input标签来上传文件,而这些文件通常是图片文件。图片有很多格式我们只需要其中的几种,就需要对用户上传的文件进行验证,在HTML5中有一个新的属性:accept文件类型限制。但是通常我们会用javascript或jQuery编写方法进行验证图片的大小限制、类型判断、像素判断。
- <input type="file" name="files" id="file" onchange="verificationPicFile(this)"accept="image/*">
- 类型验证accept的属性设置为image/*,就只可以选择图片类型更方便,若是有其他更局限要求,用下面的方法
- //图片类型验证
- function verificationPicFile(file) {
- var fileTypes = [".jpg", ".png"];
- var filePath = file.value;
- //当括号里面的值为0、空字符、false 、null 、undefined的时候就相当于false
- if(filePath){
- var isNext = false;
- var fileEnd = filePath.substring(filePath.indexOf("."));
- for (var i = 0; i < fileTypes.length; i++) {
- if (fileTypes[i] == fileEnd) {
- isNext = true;
- break;
- }
- }
- if (!isNext){
- alert('不接受此文件类型');
- file.value = "";
- return false;
- }
- }else {
- return false;
- }
- }
- //图片大小验证
- function verificationPicFile(file) {
- var fileSize = 0;
- var fileMaxSize = 1024;//1M
- var filePath = file.value;
- if(filePath){
- fileSize =file.files[0].size;
- var size = fileSize / 1024;
- if (size > fileMaxSize) {
- alert("文件大小不能大于1M!");
- file.value = "";
- return false;
- }else if (size <= 0) {
- alert("文件大小不能为0M!");
- file.value = "";
- return false;
- }
- }else{
- return false;
- }
- }
- //图片尺寸验证
- function verificationPicFile(file) {
- var filePath = file.value;
- if(filePath){
- //读取图片数据
- var filePic = file.files[0];
- var reader = new FileReader();
- reader.onload = function (e) {
- var data = e.target.result;
- //加载图片获取图片真实宽度和高度
- var image = new Image();
- image.onload=function(){
- var width = image.width;
- var height = image.height;
- if (width == 720 | height == 1280){
- alert("文件尺寸符合!");
- }else {
- alert("文件尺寸应为:720*1280!");
- file.value = "";
- return false;
- }
- };
- image.src= data;
- };
- reader.readAsDataURL(filePic);
- }else{
- return false;
- }
- }
4、图片不保存的回显功能。
html:
<div class="form-horizontal-input">
<span class="Validform-info">广告图片</span>
<p class="show_img">
<img src="" data-toggle="modal" href="#lookImg" style=" 200px;"> //他来保存图片url,来回显的容器
</p>
<p>
<div class="upload">
<label class="btn btn-info btn-block">
<span>上传广告图片</span>
<input class="hidden" type="file" id="show_img" accept="image/*"> //放图片文件的容器
<input type="hidden" id="file_path">
<input type="hidden" id="file_url">
</label>
</div>
</p>
<div class="remarks-Adver">
<p>注:</p>
<p>1.轮播广告图长宽比建议5:2</p>
<p>2.固定/默认广告图长宽比建议10:7</p>
</div>
</div>
js:
function uploadFile(id,classd) {
var file_name = window.URL.createObjectURL(document.getElementById(id).files[0]); //id为上面的show_img
$(classd).find('img').attr('src',file_name); //classed为放图片url的容器。
}