網(wǎng)上找的一個比較詳細的Struts2文件上傳的解說但在實際中還要注意一些問題網(wǎng)頁相關(guān) 2010-04-04 14:26:34 閱讀80 評論0 字號:大中小 訂閱 1.如果用到了spring的方法注入的話一定不要忘了加 scope="prototype"這樣每次訪問act 2.上傳時出現(xiàn)的錯誤信息是放在request范圍內(nèi)的如果出現(xiàn)錯誤返回的input頁面不是上傳文件的form頁面那么可以把錯誤信息提取出來 String error = this.getFieldErrors().get("file").toString();(file指struts2 file標簽里 name的名字) 放在request,session。。范圍內(nèi)然后在input指定的頁面顯示錯誤信息。 3.文件大小和類型的限制是通過Struts2攔截器實現(xiàn)的你只需要在上傳的act <param name="allowedTypes"> 但是有一點要注意Struts2默認文件上傳最大為2M即便你設(shè)置了<param name="maximumSize">5242880</param> 當上傳的文件大于2M時候也會出錯的這時要設(shè)置另外一個常量<constant name="struts.multipart.maxSize" value="1000000000"/> 要讓他的value設(shè)置的比你限定上傳最大值要大一點。 以上是文件上傳要注意的幾點其實文件上傳看起來比較難實際上比較簡單,而文件下載就有點麻煩了遇到了很惱人的編碼和亂碼問題。 1.文件下載的act public InputStream getInputStream() throws Exception 有一點要注意struts2提供了一個 ServletActionContext.getServletContext().getResourceAsStream(filePath);方 法根據(jù)路徑返回輸入流,但是這個方法和servletContext有關(guān),當你把下載的文件放在項目的根目錄中才可以否則會出錯的,最保險的辦法就是根據(jù) 文件路徑找到這個文件然后在轉(zhuǎn)化成輸入流返回。 配置: <act 2.編碼,當文件名是中文時 String downFileName = new String(downFileName.getBytes("ISO8859-1"), "utf-8"); getResponse().setHeader( setHeader是設(shè)置http請求的頭是MIME 協(xié)議的拓展可以實現(xiàn)以下功能 *希望某類或者某已知MIME 類型的文件(比如: .gif; .txt;*.htm)能夠在訪問時彈出"文件下載"對話框 |
|