JSP实现图片上传并保存到数据库

时间:2024-03-22 09:24:01

JSP实现图片上传并保存到数据库
开发工具与关键技术:Eclipse java
作者:木林森
撰写时间:2020年9 月 28 日
今天分享一个jsp页面图片上传的案例。
首先准备文件上传的依赖包:commons-fileupload-1.3.2.jar包和commons-io-2.5.jar包,然后将包放在/项目名称/WebContent/WEB-INF/lib文件夹中。
接着在jsp页面添加form表单,表单用post提交,注意enctype属性值还要设置为enctype=“multipart/form-data”,在上传单个文件的时候,应该使用单个带有属性type=“file” 的 <input …/> 标签。有些时候为了允许多个文件上传,就会用多个name属性值不同的input标签来实现,输入标签具有不同的名称属性的值,浏览器会为每个input标签关联一个‘浏览’按钮。
我的jsp页面设置代码如下图:
JSP实现图片上传并保存到数据库

显示样式如下:
JSP实现图片上传并保存到数据库

Dao类:public boolean insert(T t);
DaoImpl类:sql语句:private String insert=“insert into users(user_name,password,user_type_id,sex,age,id_number,picture) values (?,?,?,?,?,?,?);”;
JSP实现图片上传并保存到数据库

前面的代码比较简单一点,重点的代码是在Servlet里面,它比较麻烦的是对图片处理。
图片处理:首先是获取jsp页面的file文件,然后是构建上传路径,添加路径分隔符,判断是否已经存在或是否是文件类型,是就对文件输入流进行处理和读取然后返回文件类型关闭流,代码如下:
JSP实现图片上传并保存到数据库

保存的时候最好判断请求头中是否含有enctype=“multipart/form-data”,没有直接提示,有的话就设置内存临界值,单个文件最大大小和请求最大值:
int sizeThreshold=102410245;//设置内存临界值 5M
int fileSizeMax=102410245; //设置单个文件的最大大小
int sizeMax=1024102411;//设置请求的最大大小
DiskFileItemFactory factory=new DiskFileItemFactory();
当文件超过设置的值时就写入到临时文件夹,否则就保存在内存
factory.setSizeThreshold(sizeThreshold);
设置DiskFileItemFactory的临时文件夹。java.io.tmpdir 代表系统temp目录
factory.setRepository(new File(System.getProperty(“java.io.tmpdir”)));
ServletFileUpload upload=new ServletFileUpload(factory);
upload.setHeaderEncoding(“utf-8”);//设置编码
upload.setFileSizeMax(fileSizeMax);//设置单个文件的最大大小
upload.setSizeMax(sizeMax);//设置请求的最大大小
String uploadPath=“H:\Java2020MyPicture\upload”;//构建上传目录的路径
然后判断路径是否存在,不存在就创建。然后判断上传的是否是文件,如果是非文件就如下图处理:
JSP实现图片上传并保存到数据库

如果是文件:
JSP实现图片上传并保存到数据库

实现样式如下:
JSP实现图片上传并保存到数据库