关于项目中上传图片时图片尺寸和大小的判断问题
来源:互联网 发布:投资数据库终端 编辑:程序博客网 时间:2024/06/09 18:22
关于项目中上传图片时图片尺寸和大小的判断问题
获取页面中图片的尺寸有以下2种思路:
1,在前台页面,通过JS获取;
2,在后台通过文件流获取;
首先来看第一种,在前台页面中获取,首先谷歌浏览器是没有问题的,可以获取到图片的尺寸,无论是页面加载完成后显示的图片,还是JS生成的图片,比如预览图片。但是IE浏览器只能获取到页面加载完成以后显示的图片,没法获取到预览图片的尺寸。这个主要是IE浏览器的为了安全性考虑的。
优点:在前台通过JS获取,减轻服务器压力;
缺点:浏览器兼容性问题、存在被攻击的风险,安全性不如后台;
通过项目中实践,建议采用第二种思路,也就是在后台通过文件流获取图片的宽高和大小。
优点:不存在浏览器兼容性问题;
缺点:服务器端校验,增加了服务器端的压力;
示例代码:
InputStream fileIs=null;if(fileIs != null){ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();InputStream inputStream = null;try {byte[] buffer = new byte[1024];int len;while ((len = fileIs.read(buffer)) > -1 ) {byteArrayOutputStream.write(buffer, 0, len);}baos.flush();inputStream = new ByteArrayInputStream(baos.toByteArray());BufferedImage buff;buff = ImageIO.read(inputStream);int width = buff.getWidth(); //获取上传图片的宽度int height = buff.getWidth(); //获取上传图片的高度int newwidth = 0;if(!"".equals(dbmimgwidth) && dbmimgwidth != ""){newwidth = Integer.parseInt(dbmimgwidth); //获取页面中的图片的宽度} if(0 != newwidth && newwidth != width){ throw new NewException("图片宽度不一致!!!"); } fileIs = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());} catch (IOException e) {logger.error("获取图片宽度和高度失败.......");throw new NewException("获取图片宽度和高度失败,保存失败!");}finally{try {if(inputStream != null){inputStream.close();}byteArrayOutputStream.close();} catch (IOException e) {e.printStackTrace();}}}
根据以往的项目经验,图片的尺寸和大小的控制,最好选择在后台,通过文件流操作来获取,这样可以有效避免浏览器的兼容性问题和安全性问题。以上仅为一家之言,仅供参考,如有不对之处,请多包含。
分享一首刘禹锡的诗:《闻乐天扬州初逢席上见赠》
巴山蜀水凄凉地,二十三年弃置身。
怀旧空吟闻笛赋,到乡翻似烂柯人。
沉舟侧畔千帆过,病树前头万木春。
今日听君歌一曲,暂凭杯酒长精神。
0 0
- 关于项目中上传图片时图片尺寸和大小的判断问题
- 上传图片js判断图片尺寸和格式
- 图片上传 文件类型和大小的判断
- 上传图片js判断图片尺寸和格式兼容IE
- iOS上传照片:图片尺寸压缩,上传时大小压缩,QBImagePickerController多选照片出现的问题
- 用JS检测图片尺寸和图片文件的大小
- javascript判断上传图片的大小和格式
- javascript判断上传图片的大小和格式
- javascript脚本判断上传图片的大小宽度和格式
- jquery判断图片上传的类型和大小
- 判断上传图片的尺寸和大小 ----实战
- 判断上传图片的尺寸和大小demo
- 判断上传图片类型和大小
- js 判断上传图片尺寸大小(var img =new Image())
- 判断上传图片文件的大小(字节)
- JavaScript上传图片的方法 判断图片的格式和大小、获取图片的base64编码
- Html input(file)实现图片的上传 判断图片的大小和类型
- ASP.NET中关于上传附件的大小设置问题
- 复杂链表的复制
- NOI2015模拟SXK 字符串游戏 后缀数组预处理+主席树查询
- BigDecimal计费
- 常规求幂、二分求幂、快速位求幂
- UIView的常用属性(如clipsTobounds)
- 关于项目中上传图片时图片尺寸和大小的判断问题
- Android 布局深度优化(减少布局层次)
- 关于使用phpqrcode二维码无法显示的问题
- OpenGL基础图形编程(十)真实感图形基本概念
- OpenCV中resize函数五种插值算法的实现过程
- siof()用法和介绍
- 用于并行计算的多线程数据结构,第 2 部分: 设计不使用互斥锁的并发数据结构
- 分享我目前做小型web应用程序的包结构
- 使用UltraISO(软碟通)制作U盘启动盘完整教程