///apis/file/down 这里为通过Feign框架动态创建了一个MrcClient接口的实现远程的接口
//需要使用Response 接口,使用InputStream接收会报错,错误内容如下
/*Unexpected character ('#' (code 35)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false') at [Source: (BufferedReader); line: 1, column: 2] reading GET api-url*/
@Operation(summary = "封装文件下载")
@GetMapping(value = "/apis/file/down",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
Response getResponseDownload(@RequestParam("fileId")String fielId);
@Autowired
private HttpServletResponse response;
//下载接口方法
public void downFileByFileId(String fileId) {
try{
//通过远程接口获取文件流
InputStream in = getResponseDownload(fileId).body().asInputStream();
response.setContentType("multipart/form-data");
String formFileName = standard.getStandardName().substring(0,standard.getStandardName().lastIndexOf(".") );
response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(formFileName + ".xlsx", "utf-8"));
OutputStream os = response.getOutputStream();
byte[] b = new byte[1024 * 1024 * 2];
int len;
while ((len = in.read(b)) > 0) {
os.write(b, 0, len);
}
os.flush();
os.close();
in.close();
}catch (Exception e){
throw new ServerRuntimeException("下载文件失败");
}
}
封装远程调用的下载接口
最新推荐文章于 2024-06-20 20:20:21 发布