java web 导入图片_Java Web——图像上传

本文档详细介绍了如何使用Java Web进行图像上传操作。通过ServletFileUpload解析请求,设置上传大小限制,处理上传的FileItem对象,将文件保存到指定目录,并删除临时文件。最后,将文件名和路径信息转发到upload.jsp页面。
摘要由CSDN通过智能技术生成

packageservlet;importjava.io.File;importjava.io.IOException;importjava.util.Date;importjava.util.Iterator;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.fileupload.FileItem;importorg.apache.commons.fileupload.FileUploadException;importorg.apache.commons.fileupload.disk.DiskFileItemFactory;importorg.apache.commons.fileupload.servlet.ServletFileUpload;/*** Servlet implementation class UploadServlet*/@WebServlet("/UploadServlet")public class UploadServlet extendsHttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

doPost(request, response);

}protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {//判断上传表单是否为multipart/form-data类型

if(ServletFileUpload.isMultipartContent(request))

{try{//1. 创建DiskFileItemFactory对象,设置缓冲区大小和临时文件目录

DiskFileItemFactory factory = newDiskFileItemFactory();//System.out.println(System.getProperty("java.io.tmpdir"));//默认临时文件夹//2. 创建ServletFileUpload对象,并设置上传文件的大小限制。

ServletFileUpload sfu = newServletFileUpload(factory);

sfu.setSizeMax(10*1024*1024);//以byte为单位 不能超过10M 1024byte = 1kb 1024kb=1M 1024M = 1G

sfu.setHeaderEncoding("utf-8");//3. 调用ServletFileUpload.parseRequest方法解析request对象,得到一个保存了所有上传内容的List对象。

List fileItemList =sfu.parseRequest(request);

Iterator fileItems =fileItemList.iterator();//4. 遍历list,每迭代一个FileItem对象,调用其isFormField方法判断是否是上传文件

while(fileItems.hasNext())

{

FileItem fileItem=fileItems.next();//普通表单元素

if(fileItem.isFormField())

{

String name= fileItem.getFieldName();//name属性值

String value = fileItem.getString("utf-8");//name对应的value值

System.out.println(name+ " = "+value);

}//的上传文件的元素

else{

String fileName= fileItem.getName();//文件名称

System.out.println("原文件名:" + fileName);//Koala.jpg

String suffix= fileName.substring(fileName.lastIndexOf('.'));

System.out.println("扩展名:" + suffix);//.jpg//新文件名(唯一)

String newFileName = new Date().getTime() +suffix;

System.out.println("新文件名:" + newFileName);//image\1478509873038.jpg//5. 调用FileItem的write()方法,写入文件

File file = new File(request.getServletContext().getRealPath("image")+"\\"+newFileName);

System.out.println(file.getAbsolutePath());

fileItem.write(file);//6. 调用FileItem的delete()方法,删除临时文件

fileItem.delete();/** 存储到数据库时注意

* 1.保存源文件名称 Koala.jpg

* 2.保存相对路径 image/1478509873038.jpg

**/request.setAttribute("image_name",fileName);

request.setAttribute("image_path","image/"+newFileName);

request.getRequestDispatcher("/upload.jsp").forward(request, response);

}

}

}catch(FileUploadException e) {

e.printStackTrace();

}catch(Exception e) {

e.printStackTrace();

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值