【Java技术点滴】——精简实现图片处理
来源:互联网 发布:七日杀小人物模型数据 编辑:程序博客网 时间:2024/06/10 10:58
引言:
对于图片的处理是很多项目中都会用到的,如一般的人事管理系统等,处理方式主要分为两大类:
1.图片文件存储与磁盘中,数据库中只保存相对应的文件名;
2.文件采用二进制的形式保存于数据库中。
第二种方案占用空间大,并且对二进制流的操作也较为占用资源,因此采用第一种方案进行处理的情况较为常见,常用于一般的系统应用中,正在进行中的drp项目中用到了图片上传、显示的功能处理,采用commons-fileupload1.1.1版本,可以实现多文件的上传功能。
实现:
引入相关jar包后,对方法进行了精简,简单实现文件上传的功能:
public class FileUploadServlet { private File uploadPath; private File tempPath; public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{DiskFileItemFactory factory = new DiskFileItemFactory();factory.setSizeThreshold(4096);factory.setRepository(tempPath);String itemNo = "";ServletFileUpload upload = new ServletFileUpload(factory);//设置上传文件最大值upload.setSizeMax(1000000 * 20);try{//获取提交表单内的集合信息List fileItems = upload.parseRequest(request);//遍历集合内元素for (Iterator iter = fileItems.iterator(); iter.hasNext();){FileItem item = (FileItem)iter.next();//是普通的表单输入域if(item.isFormField()){//非提交文件数据的处理 }//忽略其他不是文件域的所有表单信息if (!item.isFormField()) {String fileName = item.getName();long size = item.getSize();if((fileName==null||fileName.equals("")) && size==0)continue;item.write(new File(uploadPath, fileName));}}}catch (Exception e){e.printStackTrace();}}//初始化路径信息:存储路径、临时存放路径public void init() throws ServletException {uploadPath = new File(getServletContext().getRealPath("upload"));if(!uploadPath.exists()){uploadPath.mkdir(); //建立相对应的上传文件夹}tempPath = new File(getServletContext().getRealPath("tmp"));if(!tempPath.exists()){tempPath.mkdir();}}}
注意:
1.上传文件所在表单必须采用Post提交
2.上传文件所在表单添加属性ENCTYPE="multipart/form-data"--多段数据提交格式(不仅包含文本格式)
3.使用request.getParameter()获取属性值的方法将失效,需使用该组件内封装的方法进行获取数据。
4.该Servlet类实现的文件上传路径目录会在Servlet初始化时确定,因此该路径是动态创建的。
小结:
图片处理到服务器后,对于显示图片(或文件),可在对应数据库表中添加字段存储文件名信息,读取图片时获取文件名,拼接路径后即可显示,这就要求在实现上传功能的同时也要实现对数据库记录的更新操作
在对图片的处理功能上,有很多第三方提供的组件,在只是简单应用的前提下进行了了解,对于需要专门的、专业的图片处理的项目中,会有专门的图片服务器来进行使用。
参考:
下载
图片存储架构学习:独立的图片服务器,给爱一个独立的空间
1 0
- 【Java技术点滴】——精简实现图片处理
- 【Java技术点滴】——分页查询
- 【Java技术点滴】——Java中的泛型理解
- 【Java技术点滴】——JSTL教程之分层思想
- 【Java技术点滴】——XML解析方式比较
- 【Java技术点滴】——Filter基本使用与扩展
- 【Java技术点滴】——ThreadLocal封装JDBC事务操作
- java动态图片处理技术
- java动态图片处理技术
- Thumbnailator java 图片处理技术
- 精简导航——编程技术专区
- android点滴—TabHost实现
- 2017点滴——技术词汇
- .NET Framework 精简版后台处理技术
- Java动态图片处理技术详解
- 【工作点滴】——thumbnailator实现图片的压缩和裁切
- 【Java技术点滴】——代理模式及其对事务封装
- Java应用——精简jre体积
- 集深数据系统V5-动态改变列
- 紫荆之声团委微信应用第一次迭代感想
- Linux-----内核移植篇
- perl中eval函数的两种使用方式
- LeetCode - Permutation Sequnce 题解
- 【Java技术点滴】——精简实现图片处理
- 面试题(4)和为S的两个数字
- MyReport报表引擎2.6.5.1新功能
- 对于String类的学习
- bign的结合有问题无法运行
- 踏进网络游戏的第一步
- 什么叫不会聊天?
- WebGIS中的坐标系
- java 生成静态页面——Freemarker实例教程