java实现文件的下载并解决文件名乱码问题

[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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值