struts2中怪异问题FileUploadInterceptor拦截器失效。多文件上传中限制文件类型后非常怪异问题。请求高手帮忙解决看看

ssxxjjii 2008-05-29 06:22:11
有个问题相当迷茫,在上传多文件的时候配置了限制文件类型和大小,,然后传个错误类型文件,后台能够截获文件类型不匹配,且大小过大,可是奇怪的是,居然执行结果文件还是上传上去了。(同样的配置方式上传单个文件能够截获类型,大小错误,且能正确返回到input指定页面,唯独这在执行多文件上传时候后台截获了可是返回了上传成功页面,且文件成功上传上去了)
下面是后台信息:(中文处为显示调试打印信息)

严重: File too large: filedata "upload_43039390_11a342c434b__8000_00000000.tmp" 3894389
2008-5-29 18:14:55 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: Could not find property [struts]
2008-5-29 18:14:55 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error
严重: Content-Type not allowed: filedata "upload_43039390_11a342c434b__8000_00000001.tmp" application/msword
2008-5-29 18:14:55 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: Could not find property [struts]
2008-5-29 18:14:55 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error
严重: Content-Type not allowed: filedata "upload_43039390_11a342c434b__8000_00000002.tmp" application/octet-stream
file is :\tmp\upload_43039390_11a342c434b__8000_00000000.tmp fileName:opera.exe fileType:application/octet-stream
file is :\tmp\upload_43039390_11a342c434b__8000_00000001.tmp fileName:application base.doc fileType:application/msword
file is :\tmp\upload_43039390_11a342c434b__8000_00000002.tmp fileName:11.rar fileType:application/octet-stream
------------执行文件上传中--------
文件上传路径: :D:\Java\apache-tomcat-5.5.20\webapps\strutsstudy\WEB-INF\webfile/opera.exe
接收到的文件file is :0--\tmp\upload_43039390_11a342c434b__8000_00000000.tmp
开始执行上传第 0个文件
第 0个文件上传结束
------------执行文件上传中--------
文件上传路径: :D:\Java\apache-tomcat-5.5.20\webapps\strutsstudy\WEB-INF\webfile/application base.doc
接收到的文件file is :1--\tmp\upload_43039390_11a342c434b__8000_00000001.tmp
开始执行上传第 1个文件
第 1个文件上传结束
------------执行文件上传中--------
文件上传路径: :D:\Java\apache-tomcat-5.5.20\webapps\strutsstudy\WEB-INF\webfile/11.rar
接收到的文件file is :2--\tmp\upload_43039390_11a342c434b__8000_00000002.tmp
开始执行上传第 2个文件
第 2个文件上传结束
2008-5-29 18:14:55 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: Could not find property [org.apache.catalina.jsp_file]
2008-5-29 18:14:56 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn

-------------------------------------------------------
我的action的配置:
<action name="upmany" class="com.study.web.action.UploadManyFilesAction">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">text/plain</param>
<param name="maximumSize">2731088</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="suc">/WEB-INF/jsp/test/suc.jsp</result>
<result name="input">/WEB-INF/jsp/test/htmlUpload.jsp</result>
<result name="err">/WEB-INF/jsp/test/err.jsp</result>
</action>

...全文
968 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssxxjjii 2008-06-03
  • 打赏
  • 举报
回复
自己问题自己解决。。。原因忘了继承ActionSupport,继承后异常消失。 OK,结贴!
ssxxjjii 2008-06-02
  • 打赏
  • 举报
回复
我的interceptor就是那个struts2里默认的文件上传拦截器啊,不是自己实现一个文件上传拦截器。struts2默认ACTION配置文件里不是也有吗,不过那个里没有设置文件类型和大小的参数,所以我就在我的action的配置里重新去覆盖配置了下,设置了文件类型和上传文件大小的限制参数。就是上面的那个action配置。所以不明白你的这句“你的interceptor是excute之前还是之后?”,使用框架的拦截器也可以配置在execute之前之后执行吗?可以的话,那请教下怎么配置。。谢谢:)
[Quote=引用 1 楼 nanjg 的回复:]
你的interceptor是excute之前还是之后?有个结论是:配置在前面的拦截器,在被拦截方法之前的
拦截动作,将对用户请求起作用;若是在被拦截方法之后的拦截动作,则会后对用户请求起作用
[/Quote]
lzn1446 2008-06-02
  • 打赏
  • 举报
回复
楼主啊我跟你有同样的问题
如果你解决了的话 就回复一下解决的办法,这个问题困扰我几天了!
nanjg 2008-05-31
  • 打赏
  • 举报
回复
你的interceptor是excute之前还是之后?有个结论是:配置在前面的拦截器,在被拦截方法之前的
拦截动作,将对用户请求起作用;若是在被拦截方法之后的拦截动作,则会后对用户请求起作用

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧