我发现Apache Tomcat允许以下配置,在硬编码或注释方法中。我不确定在上传过程中或文件上传到临时位置后是否计算了max-file-size。文档说明如下:
@MultipartConfig注释支持以下可选属性:
location:文件系统上目录的绝对路径。该 location属性不支持相对于应用程序的路径 上下文。此位置用于临时存储文件 处理部件或文件大小超过指定的部分 fileSizeThreshold设置。默认位置为“”。
fileSizeThreshold:文件的文件大小(以字节为单位) 暂时存储在磁盘上。默认大小为0字节。
MaxFileSize:上传文件允许的最大大小(以字节为单位)。如果 任何上传文件的大小都大于此大小,即网络 容器将抛出异常(IllegalStateException)。默认 大小是无限的。
maxRequestSize:multipart / form-data允许的最大大小 请求,以字节为单位。如果是,Web容器将抛出异常 所有上传文件的总大小超过此阈值。默认 大小是无限的。
注释方法:
@MultipartConfig(location="/tmp", fileSizeThreshold=1024*1024,
maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5)
如果有人能说明在上传过程中是否计算了MaxFileSize以及如何在servlet中处理此异常,我感激不尽。
答案 0 :(得分:0)
如果要上传的文件大小超过配置的最大值,则会引发IllegalStateException
异常。
当您尝试通过调用HttpServletRequest.getParts()
或HttpServletRequest.getPart()
来获取请求的部分时会发生这种情况。因此,最简单的方法就是将其简单地放入try-catch
块中,如下所示:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Parts parts = null
try {
parts = request.getParts();
} catch (IllegalStateException e) {
// File or request is too big!
// Here you can send back an error message to the client,
// I just send back an HTTP 400 (Bad Request) error page.
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
return;
}
// Process parts...
}