2012-05-23 145 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