jsp文件上传

支持多文件上传 
所需jar包 
1. commons-FileUpload 1.2 包 
2. commons-IO 1.3.1 包 
3. Commons-BeanUtils 1.8 包 

-----------------------------------upload.jsp----------------------------------- 

Java代码 
  1. <html>    
  2. <head>    
  3. <title>Jsp+Servlet upload file</title>    
  4. </head>    
  5. <body>    
  6.   <form action="uploadServlet" method="POST" enctype="multipart/form-data">    
  7.     <input type ="file" name="file1"/><br/>    
  8.     <input type ="file" name="file2"/><br/>    
  9.     <input type="submit" value="Submit" /><br/>    
  10.     <input type="reset" />    
  11.   </form>    
  12. </body>    
  13. </html>  

  
--------------------------------------uploadServlet.java--------------------------------

Java代码 
  1. package lee.util;   
  2.   
  3. import java.io.File;   
  4. import java.io.FileOutputStream;   
  5. import java.io.IOException;   
  6. import java.io.InputStream;   
  7. import java.io.OutputStream;   
  8.   
  9. import javax.servlet.ServletException;   
  10. import javax.servlet.http.HttpServlet;   
  11. import javax.servlet.http.HttpServletRequest;   
  12. import javax.servlet.http.HttpServletResponse;   
  13.   
  14. import org.apache.commons.fileupload.FileItemIterator;   
  15. import org.apache.commons.fileupload.FileItemStream;   
  16. import org.apache.commons.fileupload.disk.DiskFileItemFactory;   
  17. import org.apache.commons.fileupload.servlet.ServletFileUpload;   
  18. import org.apache.commons.logging.Log;   
  19. import org.apache.commons.logging.LogFactory;   
  20.   
  21. /**  
  22. * <p>Title:文件上传(支持多文件上传)</p>  
  23. * <p>Description>:FileUpLoad.java</p>  
  24. * <p>Create Time:Nov 3, 2010 3:22:21 PM</p>  
  25. * <p>@version: 5.0</p>  
  26. * <p>@author: LiWeichao</p>  
  27. */   
  28. public class UploadServlet extends HttpServlet {   
  29.   
  30. private static final Log log = LogFactory.getLog(UploadServlet.class);   
  31.   
  32. @Override   
  33. protected void doGet(HttpServletRequest req, HttpServletResponse resp)   
  34. throws ServletException, IOException {   
  35. this.doPost(req, resp);   
  36. }   
  37.   
  38. @Override   
  39. protected void doPost(HttpServletRequest request,   
  40. HttpServletResponse response) throws ServletException, IOException {   
  41. try {   
  42. String fileName="";//上传到服务器的文件名   
  43.     String savePath = this.getServletContext().getRealPath("/")+"UploadFiles\\";   
  44.     File saveDir = new File(savePath);     
  45.     if(!saveDir.isDirectory())//目录不存在则创建相应目录   
  46.         saveDir.mkdir();     
  47. if (ServletFileUpload.isMultipartContent(request)) {   
  48. DiskFileItemFactory dff = new DiskFileItemFactory();// 创建该对象   
  49. dff.setSizeThreshold(1024000);// 指定在内存中缓存数据大小,单位为byte   
  50. ServletFileUpload sfu = new ServletFileUpload(dff);// 创建该对象   
  51. sfu.setFileSizeMax(5000000);// 指定单个上传文件的最大尺寸(单个文件大小不超过5M)   
  52. sfu.setSizeMax(20000000);// 指定一次上传多个文件的总尺寸(总文件大小不超过20M)   
  53. FileItemIterator fii = sfu.getItemIterator(request);// 解析request   
  54. // 请求,并返回FileItemIterator集合   
  55. while (fii.hasNext()) {   
  56. FileItemStream fis = fii.next();// 从集合中获得一个文件流   
  57. if (!fis.isFormField() && fis.getName().length() > 0) {// 过滤掉表单中非文件域   
  58. // 根据系统时间生成上传文件的文件名 避免重复和中文乱码   
  59. fileName = fis.getName().trim();   
  60. fileName=System.currentTimeMillis()+fileName.substring(fileName.lastIndexOf("."));   
  61. //获取文件写入流   
  62. InputStream stream=fis.openStream();   
  63. //创建输出流   
  64. OutputStream bos=new FileOutputStream(savePath+fileName);   
  65. int bytesRead = 0;   
  66. byte[] buffer = new byte[8192];   
  67. while ((bytesRead = stream.read(buffer, 08192)) != -1){   
  68. bos.write(buffer, 0, bytesRead);//将文件写入服务器   
  69. }   
  70. bos.close();   
  71. stream.close();   
  72. }   
  73. }   
  74. response.getWriter().println("File upload successfully!!!");// 终于成功了,还不到你的上传文件中看看,你要的东西都到齐了吗   
  75. }   
  76. catch (Exception e) {   
  77. log.error("#ERROR#:上传附件发生错误,请检查!",e);   
  78. e.printStackTrace();   
  79. }   
  80.   
  81. }   
  82. }   

 

-----------------------------------web.xml-----------------------------------

Java代码 
  1. <servlet>   
  2. <servlet-name>uploadServlet</servlet-name>   
  3. <servlet-class>lee.util.UploadServlet</servlet-class>   
  4. </servlet>   
  5. <servlet-mapping>   
  6. <servlet-name>uploadServlet</servlet-name>   
  7. <url-pattern>/uploadServlet</url-pattern>   
  8. </servlet-mapping>

你可能感兴趣的:(java,apache,jsp,Web,servlet)