使用restTemplate 请求接口,对方接口响应response headers Content-Type:image/jpeg,是一张图片,我该如何接收这种数据?
属于二进制文件,用文件流读写
我觉得以下几步是必要的,但是后面怎么写就不知道了..........
①获取文件名
String filename = request.getParameter("filename");
②创建servletContext对象
ServletContext servletContext = this.getServletContext();
③设置响应头类型:
String mimeType = servletContext.getMimeType(filename);
response.setHeader("content-type", mimeType);
楼主解决了吗,今天遇到同样的问题了
ResponseEntity<org.springframework.core.io.Resource> result = restTemplate.exchange(requestEntity, org.springframework.core.io.Resource.class);
org.springframework.core.io.Resource body = result.getBody();
if (body != null) {
InputStream inputStream = body.getInputStream();
byte[] data = read(inputStream);
HttpServletResponse response = RequestHolder.getResponse();
response.getOutputStream().write(data);
response.getOutputStream().flush();
response.getOutputStream().close();
}
使用org.springframework.core.io.Resource接收回传的Content-Type:image/jpeg格式的文件流,然后再重新写回到HttpServletResponse 达到下载功能
这种响应,直接读取 ResponseOutputStream 写入到本地文件就可以了呀。
这就是文件下载的逻辑呢。