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