【问题标题】:Struts2 - File Upload: Detecting File Size ErrorStruts2 - 文件上传:检测文件大小错误
【发布时间】:2012-05-23 08:33:08
【问题描述】:

我已经使用 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>

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

谢谢

【问题讨论】:

    标签: file-upload struts2 action


    【解决方案1】:

    FileUpload 有一个文件大小参数,你可以在你的配置中使用它

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

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

    struts.messages.error.file.too.large

    当上传的文件过大时发生 最大尺寸。

    使您的操作ValidationAware,如果Struts2 遇到此错误,您将收到通知,您的addFieldError 将被调用以通知您keystruts.messages.error.file.too.large 和您在属性文件中定义的消息的错误,一旦您的addFieldError 被调用,您就可以采取必要的行动。

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

    【讨论】:

    • 我的问题不在于设置文件大小。我已经弄清楚如何设置文件大小和所有内容。我的问题是“如果用户上传的文件大于设置的文件大小,我如何捕获错误以及如何显示自定义页面/错误消息”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    相关资源
    最近更新 更多