javaweb上传文件-限制文件大小、请求大小 作者:马育民 • 2021-04-13 08:22 • 阅读:10092 # 说明 在实现上传文件时,需要限制文件大小,否则上传 大文件 ,会给服务器带来巨大负担 通过 `ServletFileUpload `类对象实现: - `setFileSizeMax();` :设置最大上传文件的大小 - `setSizeMax()`:设置最大请求的大小 # 实现 ### 关键代码 ``` // 设置最大文件大小,超过会报错 sfu.setFileSizeMax(MAX_FILE_SIZE); // 设置最大请求值 (包含文件和表单数据) sfu.setSizeMax(MAX_REQUEST_SIZE); ``` ### 完整代码 ``` @WebServlet(urlPatterns ="/upload") public class UploadServlet extends HttpServlet { // 上传文件存储目录 private static final String UPLOAD_PATH = "upload"; // 上传配置 private static final int MAX_FILE_SIZE = 1024 * 1024 * 5; // 5MB private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 6; // 6MB @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { boolean isMC=ServletFileUpload.isMultipartContent(req); if(isMC){ FileItemFactory fif=new DiskFileItemFactory(); ServletFileUpload sfu=new ServletFileUpload(fif); // 设置最大文件大小,超过会报错 //一般都会设置文件大小,否则上传1G文件,服务器承受不了 sfu.setFileSizeMax(MAX_FILE_SIZE); // 设置最大请求值 (包含文件和表单数据) sfu.setSizeMax(MAX_REQUEST_SIZE); // 构造保存上传文件的路径 String uploadPath = getServletContext().getRealPath("/"+UPLOAD_PATH) ; File uploadPathFile=new File(uploadPath); if(!uploadPathFile.exists()){ uploadPathFile.mkdirs(); } try { Map> map=sfu.parseParameterMap(req); List imgs=map.get("img"); List descrips=map.get("descrip"); if(imgs!=null && !imgs.isEmpty()){ FileItem img=imgs.get(0); File uploadFile=new File(uploadPathFile, img.getName()); img.write(uploadFile); } if(descrips!=null && !descrips.isEmpty()){ String descrip=descrips.get(0).getString("utf-8"); System.out.println(descrip); } } catch (Exception e) { e.printStackTrace(); } } } } ``` 上传超过大小的文件,报错如下: ``` org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (14452145) exceeds the configured maximum (6291456) ``` 原文出处:http://malaoshi.top/show_1IXw6wrO9aE.html