@PostMapping("/file/download")
public AjaxResult downFileById(@RequestBody FileInput input,HttpServletResponse response) throws IOException {
String creditCode = input.getCreditCode();
//生成 sso
String sso = createSso(creditCode);
Long fileId = input.getFileId();
Map<String,Object> requestParam = new HashMap<>();
// 设置请求参数
requestParam.put("sso",sso);
requestParam.put("id",fileId);
// 调用第三方接口
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity request = new HttpEntity(requestParam, headers);
//当接受一个文件流时必须使用 resource (spring)接收
ResponseEntity<Resource> entity = restTemplate.postForEntity(FILEURL, request,Resource.class);
InputStream in = entity.getBody().getInputStream();
//调用下载文件接口
FileUtils fileUtils = new FileUtils();
fileUtils.downloadFile(response,in,"123.doc");
return AjaxResult.success();
}
public AjaxResult downloadFile(HttpServletResponse response, InputStream inputStream, String filename) {
filename = UriUtils.encode(filename, "UTF-8");
response.setContentType("multipart/form-data;");
response.setContentType("application/force-download");
//设置下载的文件名
response.addHeader("Content-Disposition", "attachment;fileName*=UTF-8''" + filename);
byte[] buffer = new byte[1024];
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(inputStream);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
return AjaxResult.error();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
}
}
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
}
}
}
return null;
}
java 调用第三方接口返回文件流并下载文件
最新推荐文章于 2024-05-17 16:38:25 发布