#Java#Java 图片保存到数据库


#Java#Java 图片保存到数据库
开发工具与关键技术:Eclipse /Java
本实例要实现的是上传图片同时带有字段保存到数据库 , 首先我们需要引入commons-io-2.5.jar和commons-fileupload-1.3.2.jar包 , 其次最为重要的是中jsp页面的表单中from务必要有这两个属性为method=\"post\"和 enctype=\"multipart/form-data\" , 否则数据提交失败 , 而servlet层不能通过request方式请求获取得到from表单的值 , 而是通过parseRequest()方法获取集合 , 然后for循环遍历 , 通过getFieldName()获取字段 , 通过if()进行名字一一匹配 , 从而代替request.getParameter的方法请求 。
(1)新建一个index.jsp页 , from表单要有method=\"post\"和 enctype=\"multipart/form-data\"属性 , 关键代码如下:
(2)新建一个upload.java , 用于编写selvert层代码 , 关键代码如下:
int sizeThreshold=1024*1024*1; //1m
int fileSizeMax=1024*1024*5;//5m
int sizeMax=1024*1024*8; //8m
DiskFileItemFactory factory=new DiskFileItemFactory();
// 设置内存临界值 - 超过后将产生临时图片并存储于临时目录中 10M
factory.setSizeThreshold(sizeThreshold);
//配置临时目录
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 = request.getServletContext().getRealPath(\"./\") + File.separator + \"upload\";
// 如果目录不存在则创建
File uploadDir = new File(uploadPath);
if (!uploadDir.exists()) {
uploadDir.mkdir();
try {
//获取集合
List<FileItem> formItems = upload.parseRequest(request);
Particulars  par=new Particulars();
int name=0;
for (FileItem item : formItems) {
//isFormField 表单元素
if (!item.isFormField()) {
String fileName =System.currentTimeMillis()+\"__\"+ new File(item.getName()).getName();
String filePath = uploadPath + File.separator + fileName;
File storeFile = new File(filePath);
item.write(storeFile); // 保存图片到硬盘
par.setPicture(fileName.trim());//图片路径
【#Java#Java 图片保存到数据库】else
{
//获取其他字段
String fieldName  = item.getFieldName();
//通过流 用来读取表单元素里的内容 。
java.io.BufferedReader br = new BufferedReader(new InputStreamReader(item.getInputStream()\"UTF-8\"));
//如果还有除文件域以外的其他表单元素 就用 if()进行名字一一匹配 。 此处就是request.getParameter的替换方法
if(fieldName.equals(\"SmallclassID\")){
String SmallclassID =  br.readLine();
par.setSmallclassID(Integer.parseInt(SmallclassID));
if(fieldName.equals(\"ParticularsNumber\")){
String ParticularsNumber =  br.readLine();
par.setParticularsNumber(ParticularsNumber);
if(fieldName.equals(\"ParticularsName\")){