您的位置:首页 > 编程语言 > Java开发

在SpringMvc中文件下载的简单方式

2019-01-22 15:00 92 查看

1.通过使用普通的方式进行文件下载

[code]@ResponseBody
@RequestMapping(value = "/downLoadImage")
public void downImageTemplate(HttpServletRequest request, HttpServletResponse response) throws IOException {
BufferedOutputStream bos=null;
BufferedInputStream bis=null;
try {
//获取下载文件路径
String path=ResourceUtils.getFile("classpath:static/favicon.ico").getCanonicalPath();
//创建下载文件对象
File file=new File(path);
//设置响应头
response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(file.getName(), "utf-8"));
//读取文件流
bis=new BufferedInputStream(
4000
new FileInputStream(path));
//输出文件流
bos=new BufferedOutputStream(response.getOutputStream());
byte[] bys=new byte[1024];
int i=-1;
while ((i=bis.read(bys))!=-1){
bos.write(bys,0,i);
bos.flush();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
bos.close();
bis.close();
}
}

2.通过ResponseEntity对象进行下载

[code]@ResponseBody
@RequestMapping(value = "/downLoadImage")
public ResponseEntity<byte[]> downImageTemplate(HttpServletRequest request, HttpServletResponse response) throws IOException {
//创建响应头对象
HttpHeaders headers=new HttpHeaders();
//获取文件路径
String path=ResourceUtils.getFile("classpath:game_templates/tupian.rar").getCanonicalPath();
//创建下载文件对象
File file=new File(path);
//设置文件响应类型,通过二进制流下载,及所有类型对象
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//设置下载文件名
headers.setContentDispositionFormData("attachment", file.getName());
//获取文件字节数组
byte[] fileByts=FileUtils.readFileToByteArray(file);

return new ResponseEntity<byte[]>(fileByts,headers,HttpStatus.CREATED);

}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: