@RequestMapping("/downloadCert")
@ResponseBody
//下载证书
public void downLoadCertSource(HttpServletRequest req,HttpServletResponse response,String certSourceId)
{
//得到要下载的文件名
certSourceInfo certSource=certSourceService.findCertById(certSourceId);
String certSourceText=certSource.getCertText();
String certName=certSource.getCertName();
String fileName=null;
try {
response.setContentType("binary/octet-stream");
req.setCharacterEncoding("UTF-8");
fileName=URLEncoder.encode(certName,"UTF-8");
} catch (UnsupportedEncodingException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
//解决IE和火狐浏览器不兼容,文件名有中文就乱码的问题
response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + fileName+".cer");
try {
byte[] crlByte ;
InputStream inputCrl ;
//进行64位的解码
crlByte = new BASE64Decoder().decodeBuffer(certSourceText);
inputCrl = new ByteArrayInputStream(crlByte);
//创建输出流
ServletOutputStream out ;
out = response.getOutputStream();
//创建缓冲区
byte buffer[] = new byte[1024];
int len = 0;
//循环将输入流中的内容读取到缓冲区当中
while((len=inputCrl.read(buffer))>0){
//输出缓冲区的内容到浏览器,实现文件下载
out.write(buffer, 0, len);
}
final user u=ServletContextUtil.getLoginuser();
log log = new log();
log.setAdmin_name(u.getUserName());
log.setAdmin_uid(u.getLoginAccount());
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String t = sdf.format(date);
log.setCreate_date(t);//创建时间
log.setRemark("下载证书源+"+certName+"!");
logService.addLog(log);
inputCrl.close();
out.close();
out.flush();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
解决Java下载文件,文件名包含中文在IE浏览器乱码问题
最新推荐文章于 2024-06-27 15:46:49 发布