Posted on 2007-08-05 18:06
semovy 閱讀(573)
評(píng)論(2) 編輯 收藏 所屬分類:
struts
struts中實(shí)現(xiàn)文件下載的主要代碼:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String strFileName = "測(cè)試文件.rar";
File file = new File("具體路徑" + strFileName);//
if(file.exists()){
try{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[1024];
strFileName = java.net.URLEncoder.encode(strFileName, "UTF-8");//處理中文文件名的問(wèn)題
strFileName = new String(strFileName.getBytes("UTF-8"),"GBK");//處理中文文件名的問(wèn)題
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-rar-compressed");//不同類型的文件對(duì)應(yīng)不同的MIME類型
response.setHeader("Content-Disposition","attachment; filename=" + strFileName);
OutputStream os = response.getOutputStream();
while(bis.read(buffer) > 0){
os.write(buffer);
}
bis.close();
os.close();
}
catch(Exception e){
......
}
}
return mapping.getInputForward();
}
在Struts中的實(shí)現(xiàn)和在ASP.NET的實(shí)現(xiàn)類似,這段代碼就是將服務(wù)器上的文件以流的方式發(fā)送到客戶端瀏覽器,如果要是在線打開(kāi)的方式的話還應(yīng)將response.setHeader("Content-Disposition","attachment; filename=" + strFileName);改寫(xiě)為response.setHeader("Content-Disposition","inline; filename=" + strFileName);