Posted on 2007-08-05 18:06
semovy 閱讀(572)
評論(2) 編輯 收藏 所屬分類:
struts
struts中實現文件下載的主要代碼:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String strFileName = "測試文件.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");//處理中文文件名的問題
strFileName = new String(strFileName.getBytes("UTF-8"),"GBK");//處理中文文件名的問題
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-rar-compressed");//不同類型的文件對應不同的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中的實現和在ASP.NET的實現類似,這段代碼就是將服務器上的文件以流的方式發送到客戶端瀏覽器,如果要是在線打開的方式的話還應將response.setHeader("Content-Disposition","attachment; filename=" + strFileName);改寫為response.setHeader("Content-Disposition","inline; filename=" + strFileName);