免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
網(wǎng)上找的一個(gè)比較詳細(xì)的Struts2文件上傳的解說(shuō)但在實(shí)際中還要注意一些問(wèn)題 - Bill的日志 - 網(wǎng)易博客

網(wǎng)上找的一個(gè)比較詳細(xì)的Struts2文件上傳的解說(shuō)但在實(shí)際中還要注意一些問(wèn)題

網(wǎng)頁(yè)相關(guān)2010-04-04 14:26:34閱讀80評(píng)論0  字號(hào):大中小 訂閱

1.如果用到了spring的方法注入的話一定不要忘了加 scope="prototype"這樣每次訪問(wèn)action時(shí),都會(huì)新建一個(gè)action,否則的話,會(huì)記錄上傳action留下的記錄,出現(xiàn)意想不到的錯(cuò)誤。

2.上傳時(shí)出現(xiàn)的錯(cuò)誤信息是放在request范圍內(nèi)的如果出現(xiàn)錯(cuò)誤返回的input頁(yè)面不是上傳文件的form頁(yè)面那么可以把錯(cuò)誤信息提取出來(lái)

String error = this.getFieldErrors().get("file").toString();(file指struts2 file標(biāo)簽里 name的名字)

放在request,session。。范圍內(nèi)然后在input指定的頁(yè)面顯示錯(cuò)誤信息。

3.文件大小和類型的限制是通過(guò)Struts2攔截器實(shí)現(xiàn)的你只需要在上傳的action中做如下配置就可以

<param name="allowedTypes">
      application/octet-stream,application/x-zip-compressed,image/bmp,image/png,image/gif,image/jpeg,image/jpg,image/x-png,
      image/pjpeg
 </param>
 <param name="maximumSize">5242880</param>

但是有一點(diǎn)要注意Struts2默認(rèn)文件上傳最大為2M即便你設(shè)置了<param name="maximumSize">5242880</param>

當(dāng)上傳的文件大于2M時(shí)候也會(huì)出錯(cuò)的這時(shí)要設(shè)置另外一個(gè)常量<constant name="struts.multipart.maxSize" value="1000000000"/>

要讓他的value設(shè)置的比你限定上傳最大值要大一點(diǎn)。

以上是文件上傳要注意的幾點(diǎn)其實(shí)文件上傳看起來(lái)比較難實(shí)際上比較簡(jiǎn)單,而文件下載就有點(diǎn)麻煩了遇到了很惱人的編碼和亂碼問(wèn)題。

1.文件下載的action和普通的action查不多僅僅是該Action需要提供一個(gè)返回InputStream流的方法

public InputStream getInputStream() throws Exception
  
  Attachment attachment=attachmentManager.get(Long.valueOf(attachmentId));   
  File downFile=new File(attachment.getFilePath());   InputStream inStream = new FileInputStream(downFile);   
  return inStream;  
}

有一點(diǎn)要注意struts2提供了一個(gè)ServletActionContext.getServletContext().getResourceAsStream(filePath);方法根據(jù)路徑返回輸入流,但是這個(gè)方法和servletContext有關(guān),當(dāng)你把下載的文件放在項(xiàng)目的根目錄中才可以否則會(huì)出錯(cuò)的,最保險(xiǎn)的辦法就是根據(jù)文件路徑找到這個(gè)文件然后在轉(zhuǎn)化成輸入流返回。

配置:

<action name="download" class="attachmentAction"
   method="downloadAttachment">
   <result name="success" type="stream">
    <param name="bufferSize">2048</param> //輸入流緩沖的大小
    <param name="inputPath">inputStream</param>  //inputStream和getInputStream() 是對(duì)應(yīng)的
   </result>
  </action>

2.編碼,當(dāng)文件名是中文時(shí)

String downFileName = new String(downFileName.getBytes("ISO8859-1"), "utf-8");

getResponse().setHeader(
    "Content-Disposition",
    "attachment; filename="
      + java.net.URLEncoder.encode(downFileName, "UTF-8"));

setHeader是設(shè)置http請(qǐng)求的頭是MIME 協(xié)議的拓展可以實(shí)現(xiàn)以下功能

*希望某類或者某已知MIME 類型的文件(比如: .gif; .txt;*.htm)能夠在訪問(wèn)時(shí)彈出"文件下載"對(duì)話框
*希望以原始文件名(上傳時(shí)的文件名,例如:山東省政府1024號(hào)文件.doc)提供下載,但服務(wù)器上保存的地址卻是其他文件名(如:12519810948091234_asdf.doc)
*希望某文件直接在瀏覽器上顯示而不是彈出文件下載對(duì)話框 上面的代碼實(shí)現(xiàn)了第一個(gè)功能。


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
struts2 文件下載示例1_普通下載
Eclipse搭建Struts框架,及一個(gè)簡(jiǎn)單的Struts例子
struts實(shí)現(xiàn)文件下載
struts2默認(rèn)配置詳解
struts2.0上傳下載
struts2.2.1 文件上傳
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服