Servlet 3.0文件上载处理异常

时间:2015-06-10 14:25:02

标签: java servlets servlet-filters servlet-3.0

我正在尝试使用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过滤器来做同样的事情?

0 个答案:

没有答案