/**
*
* @Title: processFileName
*
* @Description: ie,chrom,firfox下处理文件名显示乱码
*/
public static String processFileName(HttpServletRequest request, String fileNames) {
String codedfilename = null;
try {
String agent = request.getHeader("USER-AGENT");
if (null != agent && -1 != agent.indexOf("MSIE") || null != agent
&& -1 != agent.indexOf("Trident")) {// ie
String name = java.net.URLEncoder.encode(fileNames, "UTF8");
codedfilename = name;
} else if (null != agent && -1 != agent.indexOf("Mozilla")) {// 火狐,chrome等
codedfilename = new String(fileNames.getBytes("UTF-8"), "iso-8859-1");
}
} catch (Exception e) {
e.printStackTrace();
}
return codedfilename;
}
原文地址:http://blog.csdn.net/heyanfeng22/article/details/49453405
@RequestMapping(value="downLoadTest.do")
public ResponseEntity<byte[]> download(String id,String userid,HttpServletRequest request) throws IOException {
SystemUser user = (SystemUser) request.getSession().getAttribute("user");
boolean mark = false;
System.out.println("下载开始:" + new Date().getTime());
//生成uuid 以免生成的文件与客户端重复
String uuid = UUID.randomUUID().toString();
List list = service.downloadfile(id, user.getUsername());// 下载矩阵文件
mark = new MatrixController().createTxt(list,uuid);
System.out.println("下载结束:" + new Date().getTime());
if(mark){
String fileName = userid+uuid+".txt";
//从服务器中的指定地址拿文件,然后判断文件是否存在
File file = new File("d:/" + fileName);
String dfileName = new String(fileName.getBytes("UTF-8"), "iso8859-1");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//headers.setContentDispositionFormData("attachment", dfileName);
headers.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\"");
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.OK);
}else{ //生成矩阵文件失败,生成空文件给出提示
String fileName = "矩阵信息不存在.txt";
String codedfilename = processFileName(request,fileName);
//从服务器中的指定地址拿文件,然后判断文件是否存在
File file = new File("d:/" + fileName);
if(!file.exists()){
file.createNewFile();
}
String dfileName = new String(fileName.getBytes("UTF-8"), "iso8859-1");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", codedfilename);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.OK);
}
}
将HttpStatus.CREATED 更改为 HttpStatus.OK
更详细的相似问题及解决方案查看 http://blog.csdn.net/xht555/article/details/48495967
*
* @Title: processFileName
*
* @Description: ie,chrom,firfox下处理文件名显示乱码
*/
public static String processFileName(HttpServletRequest request, String fileNames) {
String codedfilename = null;
try {
String agent = request.getHeader("USER-AGENT");
if (null != agent && -1 != agent.indexOf("MSIE") || null != agent
&& -1 != agent.indexOf("Trident")) {// ie
String name = java.net.URLEncoder.encode(fileNames, "UTF8");
codedfilename = name;
} else if (null != agent && -1 != agent.indexOf("Mozilla")) {// 火狐,chrome等
codedfilename = new String(fileNames.getBytes("UTF-8"), "iso-8859-1");
}
} catch (Exception e) {
e.printStackTrace();
}
return codedfilename;
}
原文地址:http://blog.csdn.net/heyanfeng22/article/details/49453405
@RequestMapping(value="downLoadTest.do")
public ResponseEntity<byte[]> download(String id,String userid,HttpServletRequest request) throws IOException {
SystemUser user = (SystemUser) request.getSession().getAttribute("user");
boolean mark = false;
System.out.println("下载开始:" + new Date().getTime());
//生成uuid 以免生成的文件与客户端重复
String uuid = UUID.randomUUID().toString();
List list = service.downloadfile(id, user.getUsername());// 下载矩阵文件
mark = new MatrixController().createTxt(list,uuid);
System.out.println("下载结束:" + new Date().getTime());
if(mark){
String fileName = userid+uuid+".txt";
//从服务器中的指定地址拿文件,然后判断文件是否存在
File file = new File("d:/" + fileName);
String dfileName = new String(fileName.getBytes("UTF-8"), "iso8859-1");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//headers.setContentDispositionFormData("attachment", dfileName);
headers.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\"");
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.OK);
}else{ //生成矩阵文件失败,生成空文件给出提示
String fileName = "矩阵信息不存在.txt";
String codedfilename = processFileName(request,fileName);
//从服务器中的指定地址拿文件,然后判断文件是否存在
File file = new File("d:/" + fileName);
if(!file.exists()){
file.createNewFile();
}
String dfileName = new String(fileName.getBytes("UTF-8"), "iso8859-1");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", codedfilename);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.OK);
}
}
将HttpStatus.CREATED 更改为 HttpStatus.OK
更详细的相似问题及解决方案查看 http://blog.csdn.net/xht555/article/details/48495967