如何读取图片的size:

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

  

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

 var fileData = file.files[0];
var size = fileData.size; //注意,这里读到的是字节数
var isAllow = false;
var maxSize = Max_Size;
maxSize = maxSize * 1024; //转化为字节
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>

最新文章

  1. maven配置和下载
  2. Java中静态内部类的理解
  3. 用C#读取txt文件的方法
  4. flume-ng 集群搭脚本
  5. gz
  6. PHP--TP框架----操作数据库
  7. java 计算 文件 md5
  8. Android IOS WebRTC 音视频开发总结(四三)-- 诚信交易案例分享
  9. js设计模式(12)---职责链模式
  10. 黑马程序员_&lt;&lt;GUI(图形用户管理)-----2&gt;&gt;
  11. Qt自定义带游标的slider,在滑块正上方显示当前值(类似于进度条,用一个额外的QLabel冒充QSilder的一部分,然后move就行了)
  12. centos6.4搭建apache+mysql+php环境
  13. noip2008(最优贸易)
  14. 检查型异常(Checked Exception)与非检查型异常(Unchecked Exception)
  15. PHPUnit-附录 A. 断言 (assert)
  16. Linux学习笔记:nginx基础
  17. 10.12Django form表单
  18. h5登录页面
  19. php判断文件夹是不是存在
  20. HTTP1.0 HTTP 1.1 HTTP 2.0主要区别

热门文章

  1. 10款常见MySQL高可用方案选型解读【转】
  2. maven profile 优先级
  3. vue2.0组件之间的传值
  4. SQLAlchemy-对象关系教程ORM-create
  5. Oracle 函数 “把当前的用户(审核人,审核通过后)插入到数据表中”
  6. Java HashCode详解
  7. $()与document.getElementById
  8. 在SQL中有时候我们需要查看现在正在SQL Server执行的命令
  9. Python 面试题学习
  10. 更改Chrome浏览器安装位置的方法