struts2 common-files upload 解析不到文件域

HttpServletRequest request = ServletActionContext.getRequest();
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(419430400);
List items = upload.parseRequest(request);


以上代码是struts2 和 common-files 进行文件上传的功能,但是在最后一步中发现从request中解析的文件(FileItem)列表为空,

但是又能够确保前端的页面中的表单域中确实没有错误,那这是为什么呢?


原因在于,这里的request是被struts2 进行封装的,已经不再是原生的Servlet 请求,所以这个request无法被ServletFileUpload 解析,这就导致了列表为空;

那么解决的方法就是,使用没有被struts2封装过的request,可以在struts.xml中指定文件上传使用的request解析器,如下:


 


其中com.mypkg.RequestParseWrapper是自己实现的类:

public class RequestParseWrapper extends JakartaMultiPartRequest{     
    //这里对parse方法进行了覆盖,使其无法封装request
    public   void   parse(HttpServletRequest   servletRequest,   String   saveDir)throws   IOException { 

    }     
}
这样就可以解决无法解析文件域的问题了


你可能感兴趣的:(java,上传,Struts,文件为空)