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

File Struts2上传文件,发送文件前验证文件大小和内容类型,file,validation,upload,struts2,size,File,Validation,Upload,Struts2,Size,我对Struts 2及其文件上传拦截器有问题。它已经验证了我的内容类型和文件大小,但是上传过程没有停止。 示例我的上传限制为2Mb,用户发送的文件为500MB,拦截器struts 2记录该文件太大,但继续上传文件 我想停止上传过程,以防出错,因为struts2只有在发送文件完成后才返回到我的页面 谢谢您不能在Struts中使用它,因为Struts在servlet容器完成对响应对象的处理之前不会获得响应对象 但是-大多数容器都有控制上传文件大小的方法,对于tomcat,这是maxPostSize参

我对Struts 2及其文件上传拦截器有问题。它已经验证了我的内容类型和文件大小,但是上传过程没有停止。 示例我的上传限制为2Mb,用户发送的文件为500MB,拦截器struts 2记录该文件太大,但继续上传文件

我想停止上传过程,以防出错,因为struts2只有在发送文件完成后才返回到我的页面


谢谢

您不能在Struts中使用它,因为Struts在servlet容器完成对响应对象的处理之前不会获得响应对象

但是-大多数容器都有控制上传文件大小的方法,对于tomcat,这是maxPostSize参数(默认值为2GB)-据我所知,tomcat将计算传入字节数,如果超过此值,则退出。i、 e 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>

2097152
图像/jpeg,图像/bmp
1000
wait.jsp
cmresulttemp.jsp
attachfiles.jsp
attachfiles.jsp
如果要限制上载内容的总大小(而不是每个文件),请将其添加到struts.xml文件的顶部

<constant name="struts.multipart.maxSize" value="10485760" /> <!-- Total 10 MB-->


根据我的理解,服务器可以在上传文件后验证它,而不是之前。我不认为你可以,因为实际的物理上传是由服务器处理的——标准Http多部分表单处理,Struts在请求完成之前无法控制请求。您可以通过servlet容器/internet服务器hi@user497087执行某些操作。谢谢,在处理请求之前,我无法拦截请求。我正在使用Jetty,前面有一个Apache。我将了解如何配置Jetty。此解决方案不会停止上载。