Struts2 - 文件上传:检测文件大小错误

时间:2012-05-23 08:33:08

标签: file-upload struts2 action

我使用Struts2实现了一个上传工具。我已经通过以编程方式检查我的动作类中的setFileContentType()方法来限制上传特定的文件类型。

剩下的一个问题是,如果上传的文件超出最大文件大小设置,则向用户显示自定义错误页面。

我研究了这个,看到了验证拦截器应该如何与返回的“输入”结果一起使用。但是,我仍然无法将所有部分组合在一起。

我的最终目标如下:如果用户尝试上传大文件,我想显示一个包含我自己的错误消息的新页面。

任何提示/建议?

更新 我的struts.xml中有以下配置:

<action name="FileUpload" class="common.FileUpload">
<interceptor-ref name="fileUpload"/>
  <result name="success">common/FileUpload/FileUpload.jsp</result>
  <result name="UploadResult">common/FileUpload/FileUploadResult.jsp</result>
</action>

我知道如果我想检测文件大小错误,上面的配置缺少验证拦截器。问题是,我不确定这一点是如何发挥作用的。

由于

1 个答案:

答案 0 :(得分:1)

FileUpload有一个filesize参数,您可以在配置中使用它

    <interceptor-ref name="fileUpload">
        <param name="maximumSize">50</param>
    </interceptor-ref> 

如果您想提供自定义消息,可以在此处设置

  

struts.messages.error.file.too.large

     

当上传的文件太大而无法指定时发生   MAXIMUMSIZE。

启动您的操作ValidationAware,如果Struts2遇到此错误,您会收到通知,系统会调用您的addFieldError通知您keystruts.messages.error.file.too.large {}}的错误您在属性文件中定义的消息,一旦调用了addFieldError,您就可以采取必要的措施。

上传文件时FileUploadInterceptor也会对文件或文件类型,大小进行验证,如果action实现了ValidationAware,那么它将通过调用addFieldError回调方法在该操作中设置验证消息