java 支持 超大上G , 多附件上传

时间:2023-03-09 00:45:04
java 支持 超大上G , 多附件上传

首先 确定要上传的目录

WEB.XML 文件

Java代码  java 支持 超大上G , 多附件上传
  1. <listener>
  2. <listener-class><!-- 临时文件收集器 , 支持超大附件必须项 -->
  3. org.apache.commons.fileupload.servlet.FileCleanerCleanup
  4. </listener-class>
  5. </listener>
  6. <context-param>
  7. <param-name>tempXlsPath</param-name><!-- 要上传的目录 -->
  8. <param-value>/WEB-INF/temp/</param-value>
  9. </context-param>
  10. <servlet>
  11. <servlet-name>UploadServlet</servlet-name>
  12. <servlet-class>
  13. com.thams.web.fileServlet.UploadServlet
  14. </servlet-class>
  15. </servlet>
  16. <servlet-mapping>
  17. <servlet-name>UploadServlet</servlet-name>
  18. <url-pattern>/servlet/UploadServlet</url-pattern>
  19. </servlet-mapping>

servlet

Java代码  java 支持 超大上G , 多附件上传
  1. package com.thams.web.fileServlet;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.util.List;
  5. import javax.servlet.ServletContext;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.http.HttpServlet;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. import org.apache.commons.fileupload.FileItem;
  11. import org.apache.commons.fileupload.FileItemFactory;
  12. import org.apache.commons.fileupload.FileUploadException;
  13. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  14. import org.apache.commons.fileupload.servlet.FileCleanerCleanup;
  15. import org.apache.commons.fileupload.servlet.ServletFileUpload;
  16. import org.apache.commons.io.FileCleaningTracker;
  17. import org.apache.commons.io.FilenameUtils;
  18. import org.apache.log4j.Logger;
  19. /**
  20. * @author serv
  21. */
  22. public class UploadServlet extends HttpServlet {
  23. private static Logger log = Logger.getLogger(UploadServlet.class);
  24. protected void service(HttpServletRequest request,
  25. HttpServletResponse response) throws ServletException, IOException {
  26. response.setContentType("text/html;charset=UTF-8");
  27. // Check that we have a file upload request
  28. boolean isMultipart = ServletFileUpload.isMultipartContent(request);
  29. if (!isMultipart) {
  30. log.debug("没有可上传的文件, 你想干什么 !");
  31. return;
  32. }
  33. // Create a factory for disk-based file items
  34. String tempFilePath = getServletContext().getRealPath("/")+getServletContext().getInitParameter("tempXlsPath");
  35. FileItemFactory factory = newDiskFileItemFactory(getServletContext(), new File(tempFilePath));
  36. // Create a new file upload handler
  37. ServletFileUpload upload = new ServletFileUpload(factory);
  38. upload.setHeaderEncoding("UTF-8");
  39. /* FileItem */
  40. List<FileItem> items = null;
  41. try {
  42. // Parse the request
  43. items = (List<FileItem>) upload.parseRequest(request);
  44. String filename = null;
  45. for (FileItem fileItem : items) {
  46. if (!fileItem.isFormField()){//file
  47. filename = FilenameUtils.getName(fileItem.getName());
  48. fileItem.write(new File(tempFilePath+filename));
  49. response.getWriter().write(tempFilePath+filename+"<br>");
  50. }
  51. }
  52. } catch (FileUploadException e) {
  53. log.error(e.getMessage());
  54. } catch (Exception e) {
  55. log.error(e.getMessage());
  56. }
  57. }
  58. /**
  59. * The FileCleanerCleanup provides an instance of org.apache.commons.io.FileCleaningTracker.
  60. * This instance must be used when creating a org.apache.commons.fileupload.disk.DiskFileItemFactory.
  61. */
  62. public static DiskFileItemFactory newDiskFileItemFactory(
  63. ServletContext context, File repository) {
  64. FileCleaningTracker fileCleaningTracker = FileCleanerCleanup
  65. .getFileCleaningTracker(context);
  66. DiskFileItemFactory factory = new DiskFileItemFactory(
  67. DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, repository);
  68. factory.setFileCleaningTracker(fileCleaningTracker);
  69. return factory;
  70. }
  71. }

测试页面

Java代码  java 支持 超大上G , 多附件上传
  1. <form action="servlet/UploadServlet" method="post" enctype="multipart/form-data">
  2. <input id="file1" name="file1" type="file" class="input400"><br>
  3. <input id="file2" name="file2" type="file" class="input400"><br>
  4. <input id="file3" name="file3" type="file" class="input400"><br>
  5. <input id="file4" name="file4" type="file" class="input400"><br>
  6. <input type="submit" id="submit" value="提交" />
  7. </form>

测试结果

java 支持 超大上G , 多附件上传

页面输出:

java 支持 超大上G , 多附件上传

文件上传完成。

DEMO下载地址:https://dwz.cn/fgXtRtnu