[size=medium]
response.setContentType("application/octet-stream");
String docBasePath = request.getSession().getServletContext().getRealPath("/").replace("/", File.separator).replace("\\", File.separator);
docBasePath = docBasePath.substring(0,docBasePath.length()-1);
String url = (String)request.getAttribute("url");
String docPath = (url).replace("/", File.separator).replace("\\", File.separator);
String fileRealName = docPath.substring(docPath.lastIndexOf(File.separator)+1);
String filePath = docBasePath+docPath;
File file = new File(filePath);
List<LawCaseDoc> caseDoc = this.getDocDao().find("from LawCaseDoc caseDoc where caseDoc.url like'%"+fileRealName+"%'");
String fileName = "";
if(caseDoc.size()==0){
fileName = this.getFileDao().find("from SysFile sysFile where sysFile.fileUrl ='%"+fileRealName+"%'").get(0).getFileName();
}else{
fileName = caseDoc.get(0).getName();
}
response.setContentLength((int)file.length());
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0){
fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");//firefox浏览器
}else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){
fileName = URLEncoder.encode(fileName,"UTF-8");//IE浏览器
}
response.reset();//如果有换行,对于文本文件没有什么问题,但是对于其它格
response.setHeader("Content-Disposition","attachment;filename="+fileName);
OutputStream out = response.getOutputStream();
FileInputStream fis = new FileInputStream(file);
byte[]b = new byte[1024];
int len = 0;
while((len = fis.read(b))>0){
out.write(b, 0, len);
}
fis.close();
out.flush();
out.close();
//创建file对象
[/size]