commons-io在struts框架中无法获取upload.parseRequest(request)上传的文件的主要原因是因为struts将request进行了封装,在文件上传时struts会将HttpServletRequest请求被转成了MultiPartRequestWrapper,所以如需使用request,则需要将struts封装好的的MultiPartRequestWrapper转换成HttpServletRequest,这里需要实行两部操作:
操作一:创建java类,继承JakartaMultiPartRequest,代码如下:
public class RequestParseWrapper extends JakartaMultiPartRequest {
public void parse(HttpServletRequest servletRequest, String saveDir)throws IOException{}}
操作二:在struts配置文件里添加上,代码如下:
<!-- 出来文件上传时servletFileUpload.parseRequest(request)取不到值的问题 -->
<bean type= "org.apache.struts2.dispatcher.multipart.MultiPartRequest"name= "myRequestParser" class= "com.turui.util.RequestParseWrapper"scope= "default" optional= "true " /><constant name= "struts.multipart.handler" value= "myRequestParser" />
这里的class是指操作一创建的java类