第一步 通过 RestTemplate 发送指定请求获取到 byte数组
public byte[] downUserFileList(Map<String ,Object> params) {
String method ="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/git-1.png";
HttpEntity httpEntity = new HttpEntity<>( new HttpHeaders() );
ResponseEntity<byte[]> response = restTemplate.exchange(method,HttpMethod.GET,httpEntity,byte[].class);
if (null != response && response.getStatusCodeValue()==200) {
return response.getBody();
}
return null;
}
第二步 将接受到的 byte[]数组,通过respose中的输入流,响应回去
其中如果你能知晓获取的是图片的话,那么响应头需要添加 content-type=image/png
//我的材料下载接口
@RequestMapping(value = "/downUserFile" , method = RequestMethod.GET)
public void downUserFileList(String fileId, OutputStream stream,HttpServletResponse response){
// 如果没有在响应头里面设置类型的话,则是将流传输回去
// 如果该文件确认是图片,用 image/png ,详情请参考 https://tool.oschina.net/commons/
response.setHeader("content-type","image/png");
Map<String ,Object> params = new HashMap<>(16);
params.put("fileId",fileId);
byte[] result= personalCenterService.downUserFileList(params);
if (result!=null){
try {
stream.write(result);
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
如果想让浏览器识别 你这个流是图片、文档的话,那么 response.setHeader(“content-type”,“image/png”);
必不可少,其他可配置参数
文件名称 response.setHeader("content-disposition","inline; filename="git-1.png"; filename*=utf-8''git-1.png");
文件大小 response.setHeader("content-length","8701");
md5加密 response.setHeader(" content-md5","WVSN1OfJqc3foCspFm3xrg==");:
传输编码 response.setHeader("content-transfer-encoding","binary");
文件类型 response.setHeader("content-type","image/png");