Struts2上传文件,在发送文件之前验证大小和内容类型文件

时间:2012-10-15 16:36:31

标签: file validation upload struts2 size

Struts 2及其文件上传拦截器存在问题。它已经验证了我的内容类型和文件大小,但上传过程不会停止。 示例我的上传限制为2Mb,用户发送文件为500MB,拦截器struts 2日志该文件过大,但继续上传文件

我想停止上传过程,在错误的情况下,因为只有在发送文件完成后struts2才会返回我的页面。

由于

2 个答案:

答案 0 :(得分:2)

你不能在Struts中 - 因为在你的servlet容器完成处理之前,Struts没有得到响应对象。

然而 - 大多数容器都有控制上传文件大小的方法,对于tomcat,这是maxPostSize参数(默认为2GB) - 据我所知,tomcat将计算传入字节数,然后退出,如果这样超过了价值。即Tomcat不会继续读取maxPostSize。其他容器将具有类似的配置参数。我从未使用它,所以我不能在这里得到任何进一步的帮助。

如果你有嵌套容器/服务(例如,tomcat坐在Apache Web Server后面),请确保配置正确的

答案 1 :(得分:-1)

你可以。试试这个。它有效..

<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-->
相关问题