JS判断图片上传时文件大小和图片尺寸

如何读取图片的size:

  首先,原生input file控件有个files属性,该属性是一个数组。数组中的元素有以下属性:lastModifiedDate,name,size,type,webkitRelativePath,如图:

  

  这样的话,我们就可以检测到size。(这里的size是字节大小)

1 var fileData = file.files[0];
2 var size = fileData.size;   //注意,这里读到的是字节数
3 var isAllow = false;
4 var maxSize = Max_Size;
5 maxSize = maxSize * 1024;   //转化为字节
6 isAllow = size <= maxSize;

  – 兼容性:ie9下读不到input file.files这个属性。

  如何获取图片的width、height:

    1.图片真实的宽度和高度,可以通过实例化Image对象、加载src 来获取。

    2.兼容性:IE下使用滤镜来处理图片尺寸控制。

  

  1 <html>
  2 <head>
  3     <title>测试</title>
  4     <meta charset="utf-8"/>
  5
  6
  7 </head>
  8 <body>
  9
 10 <form action="" method="post">
 11     <input type="file" id="uploader"/>
 12     <input type="submit" id="submit"/>
 13 </form>
 14 <div id="tip1"></div>
 15 <div id="tip2"></div>
 16 <script>
 17
 18
 19
 20
 21
 22         var Max_Size = 2000; //2M
 23         var Max_Width = 100; //100px
 24         var Max_Height = 200; //200px
 25
 26         $(‘#submit‘).on(‘change‘,function(ev){
 27
 28             var fileEl = this;
 29
 30             console.log(fileEl);
 31
 32             testMaxSize(fileEl);
 33             testWidthHeight(fileEl);
 34         })
 35
 36         function testMaxSize(file){
 37             if(file.files && file.files[0]){
 38                 var fileData = file.files[0];
 39
 40                 var size = fileData.size;   //注意,这里读到的是字节数
 41                 var isAllow = false;
 42                 if(!size) isAllow = false;
 43
 44                 var maxSize = Max_Size;
 45                 maxSize = maxSize * 1024;   //转化为字节
 46                 isAllow = size <= maxSize;
 47
 48                 showTip1(isAllow);
 49
 50             }else{
 51                 /*... ie9下用iframe上传*/
 52                 /*
 53                 // 或者用以面的方式实现
 54                 // var img = new Image();
 55                 // 再用img.src=filepath,再用img.fileSize用取,这里不写啦,读者自行实践一下
 56                 */
 57
 58             }
 59
 60         }
 61
 62         function testWidthHeight(file){
 63             var isAllow = false;
 64             debugger;
 65
 66             if(file.files && file.files[0]){
 67                 var fileData = file.files[0];
 68
 69                 //读取图片数据
 70                 var reader = new FileReader();
 71                 reader.onload = function (e) {
 72                     var data = e.target.result;
 73                     //加载图片获取图片真实宽度和高度
 74                     var image = new Image();
 75                     image.onload=function(){
 76                         var width = image.width;
 77                         var height = image.height;
 78                         isAllow = width >= Max_Width && height >= Max_Height;
 79                         showTip2(isAllow);
 80                     };
 81                     image.src= data;
 82                 };
 83                 reader.readAsDataURL(fileData);
 84
 85             }else{
 86                 //IE下使用滤镜来处理图片尺寸控制
 87                 //文件name中IE下是完整的图片本地路径
 88                 var input = D.get(‘#uploader‘);
 89                 //var input = uploader.get(‘target‘).all(‘input‘).getDOMNode();
 90                 input.select();
 91                 //确保IE9下,不会出现因为安全问题导致无法访问
 92                 input.blur();
 93                 var src = document.selection.createRange().text;
 94                 var img = $(‘<img style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);width:300px;visibility:hidden;"  />‘).appendTo(‘body‘).getDOMNode();
 95                 img.filters.item(‘DXImageTransform.Microsoft.AlphaImageLoader‘).src = src;
 96                 var width = img.offsetWidth;
 97                 var height = img.offsetHeight;
 98                 $(img).remove();
 99
100                 isAllow = width >= Max_Width && height >= Max_Height;
101                 showTip2(isAllow);
102             }
103
104         }
105
106         function showTip1(isAllow){
107             var tipEl = D.get(‘#tip1‘),
108                     html = ‘‘;
109             if(isAllow){
110                 html = ‘大小通过</br>‘;
111             }else{
112                 html = ‘大小未通过,要求‘+ Max_Size +‘</br>‘;
113             }
114             D.html(tipEl,html);
115         }
116
117         function showTip2(isAllow){
118             var tipEl = D.get(‘#tip2‘),
119                     html = ‘‘;
120
121             if(isAllow){
122                 html += ‘宽高通过‘;
123             }else{
124                 html += ‘宽高未通过,要求width:‘+ Max_Width +‘, height:‘+ Max_Height;
125             }
126             D.html(tipEl,html);
127         }
128
129
130
131
132 </script>
133 </body>
134 </html>
时间: 2024-08-22 04:13:57

JS判断图片上传时文件大小和图片尺寸的相关文章

iOS:图片上传时两种图片压缩方式的比较

上传图片不全面的想法:把图片保存到本地,然后把图片的路径上传到服务器,最后又由服务器把路径返回,这种方式不具有扩展性,如果用户换了手机,那么新手机的沙盒中就没有服务器返回的图片路径了,此时就无法获取之前已经上传了的头像了,在项目中明显的不可行. 上传图片的正确方式:上传头像到服务器一般是将图片NSData上传到服务器,服务器返回一个图片NSString地址,之后再将NSString的路径转为url并通过url请求去更新用户头像(用户头像此时更新的便是NSString) 代码为: AFHTTPRe

kindeditor更改图片上传时网络图片的路径

当我们想要使用kindeditor的图片上传功能时,有两种选择图片方式,一种是本地选择,一种是在图片空间中选择,图片空间的默认地址是服务器上的/kindeditor/attached/image/下面. 如果想要改变这个路径,需要找到/kindeditor/php/file_manager_json.php这个文件,然后可以看到下面几行: //根目录路径,可以指定绝对路径,比如 /var/www/attached/ $root_path = $php_path . '../attached/';

图片上传时获取图片的宽和高

经常会遇到图片上传的问题,这时候我们会传图片的地址,宽和高到服务器,至于图片上传就不说了,这里主要说图片上传时获取图片的原始宽和高的问题. 一般而言,我们把图片上传至服务器时,服务器会返回一个上传地址给我们,这个就是我们图片的url了,但是光有这个还是不够的,因为还要将图片的宽和高传给服务器,这时候就可以这样做了.直接上代码: var img = new Image() img.src = url 然后就可以使用img.width和img.height来获取图片的宽和高了.当然仅仅这样做是不够的

使用Kindeditor的多文件(图片)上传时出现上传失败的解决办法/使用Flash上传多文件(图片)上传时上传失败的解决办法

近来用户反映希望我们把在线编辑器中的多图片上传功能实现,因为他们在编辑商品描述时经常会有一次上传多张图片的需求,如果要逐张选择的话效率很低,客户的需求就是我们的追求,很快我们就把完善功能排到了日程表中,要求尽快实现. 我们在项目中使用的在线编辑器是Kindeditor4.1.10,它们的多文件上传插件是使用Flash实现的,原本应该就是能使用的,但为什么老是显示上传失败的,百度了一下前人的经验和教训,出现这种情况,有两种可能:1)上传的目标文件夹没有写权限,导致上传的文件无法进行写操作,所以上传

图片上传时预览插件

html代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script src="uploadView.js" type="text/javascript"></script> <script> window.

关于图片上传时选择图片以后生成图片预览

实现选择图片之后生成预览图 <script type="text/javascript">    //下面用于多图片上传预览功能    function setImagePreviews() {        //获取选择图片的对象        var docObj = document.getElementById("filesid");        //后期显示图片区域的对象        var dd = document.getElement

图片上传时遇到的问题

今天在用ssm框架做图片上传的时候遇见一个问题: 后来检查发现是springMVC配置文件中遗漏了关于图片上传的配置文件 把上面的<bean>配置好就可以了: 顺便总结一下: 图片上传只需要记住三件事: 前台页面:(1)要用post请求:(2)别忘了在form表单中加入enctype="multipart/form-data" 后台controller层要这样写: 3.如果上面代码没问题,就检查一下springmvc配置文件;

从web编辑器 UEditor 中单独提取图片上传,包含多图片单图片上传以及在线涂鸦功能

UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码.(抄的...) UEditor是非常好用的富文本web编辑器,而且全中文API和注释,方便学习和使用.特别是图片上传查看及涂鸦功能极为喜欢,但是有很多情况我们并不需要Web编辑器,而只需要图片上传.那么问题来了,提取图片上传哪家强..... 网上有很多图片上传的控件.插件.但都不是那么的完美,有的只有一张图片上传不包含批量上传,有的没有图片查看

megapix-image插件 使用Canvas压缩图片上传 解决手机端图片上传功能的问题

最近在弄微信端的公众号.订阅号的相关功能,发现原本网页上用的uploadify图片上传功能到手机端有的手机类型上就不能用了,比如iphone,至于为啥我想应该不用多说了吧(uploadify使用flash实现上传的): 经过研究找到了一个手机端比较相对比较好用的插件实现图片上传,那就是megapix-image插件,比uploadify还是好用多了,下面就来上实例吧: html页面: <html> <body> <input type="file" cap