我正在尝试使用Java Servlet 3.0上传文件。
@WebServlet("/uploadFile")
@MultipartConfig(fileSizeThreshold=1024*1024*1, // 1 MB
maxFileSize=1024*1024*10, // 10 MB
maxRequestSize=1024*1024*100) // 100 MB
public class FileUploadServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String serverUploadDir = getServerUploadDir(req);
Part file;
try {
file = req.getPart("fileName");
file.write(serverUploadDir + File.separator + file.getSubmittedFileName());
res.sendRedirect("viewDirectory?msg=File Uploaded.");
}
catch (IllegalStateException ex) {
System.out.println(ex.getMessage());
}
}
public String getServerUploadDir(HttpServletRequest req) {
return req.getParameter("serverUploadDir");
}
}
当文件位于@MultipartConfig注释中声明的maxFileSize
下时,它可以正常工作。但是,当它们超过这个大小时,我会收到IllegalStateException,我的浏览器显示Connection已重置。即使我尝试将请求转发到catch中的其他页面,它也不起作用。
我知道使用Spring框架,我可以创建一个filterMultipartResolver
,并且它允许我在超出maxUploadSize
时处理。有没有办法创建一个常规的Java Servlet过滤器来做同样的事情?