2012-05-23 144 views
0

我已经使用Struts2实现了上传实用程序。我已经通过编程检查我的action类中的setFileContentType()方法来限制上传特定的文件类型。Struts2 - 文件上传:检测文件大小错误

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

我研究了这一点,看到验证拦截器应该如何与返回的“输入”结果一起使用。但是,我仍然不能把所有的东西放在一起。

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

任何提示/建议?

UPDATE 我在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

的FileUpload有一个文件大小参数,你可以如果你希望为您提供可以在这里设置

struts.messages自定义消息使用,在配置

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

。 error.file.too.large

当上传的文件太大,如指定时发生maximumSize。

让你的行动ValidationAware如果Struts2中遇到这个错误会通知您,您的addFieldError将被调用来通知你错误的地方key意志struts.messages.error.file.too.large和消息您在属性定义文件,一旦你的addFieldError是调用你可以采取必要的行动。

FileUploadInterceptor上传文件时也将运行在该文件或文件类型,大小验证,如果行动实现ValidationAware那么它会通过调用addFieldError回调方法

+0

我的问题是不是与设置文件中的行动设置验证消息尺寸。我已经想出了如何设置文件大小和一切。我的问题是“如果用户上传大于设置文件大小的文件,我如何捕获错误,以及如何显示自定义页面/错误消息” – Brams

+0

编辑我的答案 – mprabhat