文件下载部分:以二进制流数据下载,也是最常见的一种
@RequestMapping(value="/downloadqrcodes",method={RequestMethod.GET,RequestMethod.POST})
public ResponseEntity<byte[]> download(String filename,HttpServletRequest req,HttpServletResponse res) throws Exception {System.out.println(req.getCharacterEncoding());
System.out.println(filename);
ApplicationContext ctx = GetApplication.getApp();
QrcodepersonMapper qrcodepersonMapper = (QrcodepersonMapper) ctx.getBean("qrcodepersonMapper");
Qrcodeperson qrcodeperson = qrcodepersonMapper.selectByPrimaryKey(Integer.parseInt(filename));
String filen = qrcodeperson.getUrlname();
//下载文件路径
//filename="何家劲.jpg";
String path = req.getServletContext().getRealPath("/file/");
File file = new File(path+File.separator+filen);
System.out.println("文件路径为:"+path+File.separator+filen);
HttpHeaders headers = new HttpHeaders();
//下载显示的文件名,解决中文名称乱码的问题
String downloadFileName = new String(filen.getBytes("UTF-8"), "ISO-8859-1"); //为了下载下来的名字和文件的名字相同
System.out.println(downloadFileName);
//通知浏览器以attachment(下载方式)打开图片
headers.set(filen, null);
headers.setContentDispositionFormData("attachment", downloadFileName);
//application/octet-stream:二进制流数据(最常见的文件下载)
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//201 HttpStatus.CREATED
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers,HttpStatus.CREATED);
}