SSM框架中如何利用访问接口的形式进行文件下载?
问题描述
项目中有一需求:前端访问一个接口进行文件的下载。
当前代码如下:
@RequestMapping(value = "/reportBatchDownload", produces = "text/html;charset=UTF-8", method = RequestMethod.POST)
public @ResponseBody ResponseEntity<byte[]> reportBatchDownload(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws IOException {
File file = new File("E://S-2.jpg");
//File file = new File("E://下载目标文件.txt");
byte[] body = null;
@SuppressWarnings("resource")
InputStream is = new FileInputStream(file);
body = new byte[is.available()];
is.read(body);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attchement;filename=" + file.getName());
HttpStatus statusCode = HttpStatus.OK;
ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(body, headers, statusCode);
return entity;
}
前端访问接口的返回:
下载文件为E://S-2.jpg
时:
下载文件为E://下载目标文件.txt
时:
接口返回结果为下载文件的文本内容,并非以文件形式返回,此问题如何解决?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你先试试直接访问链接能不能下载,
用ajax请求的话你得用arraybuffer或stream接收响应数据,自己写存文件的逻辑
Content-Disposition 的文件名需要urlencode不然响应头里的文件名就是乱码