struts2漏洞爆发,近日修补漏洞,struts2.3.4.1升级到struts2.3.15.1,发现以前用uploadFile能正常上传文件显示进度条现在不能正常工作了,List items = upload.parseRequest(request),items为空,得不到HttpServletRequest值了。
研究了一天,也在网上转了一天,终于得到灵感,查看了一下struts2.3.15.1的struts-default.xml配置文件,发现<constant name=”struts.multipart.handler” value=”jakarta” />已经变成了parser,在原来的项目中把struts.multipart.handler换成了struts.multipart.parser,一切OK,正常了。
配置完成了,就可以直接利用uploadFile中的监听器来完成文件上传进度的判断了和上传文件了。
这是struts2.3.15.1的默认配置
<bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest" name="struts" class="org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest" scope="default"/> <bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest" name="jakarta" class="org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest" scope="default" /> <constant name="struts.multipart.parser" value="jakarta" />
Struts2 中用Fileupload上传文件得不到HttpServletRequest值的解决办法
因为 struts-default.xml不能直接修改,所以要在struts.xml中追加一些配置
<bean type= "org.apache.struts2.dispatcher.multipart.MultiPartRequest" name= "myRequestParser" class= "com.pojName.myUploadUtil.ParseWrapper" scope= "default" optional= "true " /> <constant name= "struts.multipart.handler" value= "myRequestParser" />
2.在com.pojName.myUploadUtil包下写一个java类 class public class RequestParseWrapper extends JakartaMultiPartRequest { public void parse(HttpServletRequest servletRequest, String saveDir)throws IOException{ } }
这样就可以得到request里的item的值了。
附注:<constant>标签用来配置常量。
<!--上传文件的大小限制,默认的情况下struts2是不接收的也就是说struts2不接收超过他默认大小限制的文件
注:上传文件的大小不是单文件的大小而是上传文件总数的大小-->
<constantname="struts.multipart.maxSize"value="10701096"/>
<!--设置上传的临时文件保存目录,默认值是javax.servlet.context.tempdir -->
<constantname="struts.multipart.saveDir"value="d:/"></constant>
<!-- 该属性指定处理multipart/form-data的MIME类型(文件上传)请求的框架,该属性支持cos、pell和jakarta等属性值,即分别对应使用cos的文件上传框架、pell上传及common-fileupload文件上传框架。该属性的默认值为jakarta. -->
<constantname="struts.multipart.parser" value="jakarta"></constant>
个人理解:新版本的struts2不再走<constant name=”struts.multipart.handler” value=”jakarta” />
<constant name=”struts.multipart.parser” value=”jakarta” />
转载于:https://blog.51cto.com/wht6650/1336272