当前位置: 代码迷 >> JavaScript >> jsp资料上传
  详细解决方案

jsp资料上传

热度:583   发布时间:2013-03-26 09:54:34.0
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,?0,?8192))?!=?-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>

  相关解决方案