jQuery获取file控件中图片的宽高与大小
问题
如何判断inputfile表单里上传的图片的宽高和大小呢?
解决方案
这个时候图片还没真正上传,也不是在页面上展示,不能使用$(“#id”).width(),$(“#id”).height()这种方式。
在StackOverflow找到一个方法获取inputfile图片文件的宽高:
var_URL=window.URL||window.webkitURL; $("#file").change(function(e){ varfile,img; if((file=this.files[0])){ img=newImage(); img.onload=function(){ alert(this.width+""+this.height); }; img.src=_URL.createObjectURL(file); } });
发现可以用,仅在火狐中测试了,其他浏览器兼容性未知,因为后台使用,所以暂且不管兼容性,拿来封装了一下。
我把这个函数完善了一下,获取inputfile图片的宽高和大小,如下:
//获取input图片宽高和大小 functiongetImageWidthAndHeight(id,callback){ var_URL=window.URL||window.webkitURL; $("#"+id).change(function(e){ varfile,img; if((file=this.files[0])){ img=newImage(); img.onload=function(){ callback&&callback({"width":this.width,"height":this.height,"filesize":file.size}); }; img.src=_URL.createObjectURL(file); } }); }
这里使用了一个回调方法,回调方法的参数是这个json对象,包含宽度、高度和大小,在jQuery中这样调用:
(function(){ //省略其他代码 getImageWidthAndHeight('image_file',function(obj){ if(obj.width!=843||obj.height!=1038){ $.messager.alert('操作提示','弹窗图片宽高必须是843*1038px'); } }); })(jQuery)
好了,这样就OK了。以上就是jQuery获取intputfile图片的宽高和大小的全部内容了,相信本文的内容会对大家平时使用jQuery和图片上传的时候很有帮助的。