我对 Struts 2 及其文件上传拦截器有疑问。它已经验证了我的内容类型和文件大小,但上传过程不会停止。示例我的上传限制为 2Mb,用户发送一个 500MB 的文件,拦截器 struts 2 记录该文件太大,但继续上传文件
我想停止上传过程,在错误的情况下,因为struts2只有在发送文件完成后才返回我的页面。
谢谢
我对 Struts 2 及其文件上传拦截器有疑问。它已经验证了我的内容类型和文件大小,但上传过程不会停止。示例我的上传限制为 2Mb,用户发送一个 500MB 的文件,拦截器 struts 2 记录该文件太大,但继续上传文件
我想停止上传过程,在错误的情况下,因为struts2只有在发送文件完成后才返回我的页面。
谢谢
你不能在 Struts 中——因为 Struts 直到你的 servlet 容器完成处理它才得到响应对象。
但是 - 大多数容器都有控制上传文件大小的方法,对于 tomcat,这是 maxPostSize 参数(默认为 2GB) - 据我所知,tomcat 将计算传入字节数,然后在超过此值时退出. 即 Tomcat 将不会继续阅读超过 maxPostSize。其他容器将具有类似的配置参数。我从未使用过它,所以在这里我无法提供任何进一步的帮助。
如果您有嵌套的容器/服务(例如,位于 Apache Web 服务器后面的 tomcat),请确保您配置了正确的
你可以。试试这个。有用..
<action name="uploadDocs" class="com.test.myapp.UploadAction" method="upload">
<interceptor-ref name="fileUpload">
<param name="maximumSize">2097152</param> <!-- Max 2 MB limit per file-->
<param name="allowedTypes">image/jpeg,image/bmp</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="execAndWait"/>
<param name="delay">1000</param>
<result name="wait">wait.jsp</result> <!-- display custom please wait page -->
<result name="success">cmresulttemp.jsp</result>
<result name="input">attachfiles.jsp</result>
<result name="error">attachfiles.jsp</result>
</action>
如果您想限制上传内容的总大小(不是每个文件),请将其添加到您的 struts.xml 文件的顶部
<constant name="struts.multipart.maxSize" value="10485760" /> <!-- Total 10 MB-->