Spring——》feign下载文件 淡淡的烟草味﹌ 2024-04-01 17:00 70阅读 0赞 > 推荐链接: > [总结——》【Java】][Java] > [总结——》【Mysql】][Mysql] > [总结——》【Spring】][Spring] > [总结——》【SpringBoot】][SpringBoot] > [总结——》【MyBatis、MyBatis-Plus】][MyBatis_MyBatis-Plus] #### Spring——》feign下载文件 #### * 一、服务提供者:good-house-push * * 1、ITmallSyncEsfCommunityController * 2、TmallEsfCommunitySyncController * 3、IEsfCommunitySyncService * 4、EsfCommunitySyncService * 5、HttpServletResponseUtils * 二、服务消费者:house-platform-api * * 1、ITmallSyncEsfCommunityApi * 2、TmallCityOpenController ## 一、服务提供者:good-house-push ## ### 1、ITmallSyncEsfCommunityController ### 方法的返回值一定是void,不要指定返回内容 public interface ITmallSyncEsfCommunityController { @ApiOperation(value = "根据批次号,下载同步二手房小区的错误日志列表") @GetMapping("/api/tmall/syncEsfCommunity/logList/downloadError/{batchNo}") void downloadErrorLogListByBatchNo(@PathVariable(name = "batchNo") String batchNo, HttpServletResponse response); } ### 2、TmallEsfCommunitySyncController ### @Slf4j @Api(value = "同步二手房小区", tags = "同步二手房小区") @RestController public class TmallEsfCommunitySyncController implements ITmallSyncEsfCommunityController { @Autowired IEsfCommunitySyncService esfCommunitySyncService; @Override public void downloadErrorLogListByBatchNo(String batchNo, HttpServletResponse response) { esfCommunitySyncService.downloadErrorLogListByBatchNo(batchNo, response); } } ### 3、IEsfCommunitySyncService ### public interface IEsfCommunitySyncService { void downloadErrorLogListByBatchNo(String batchNo, HttpServletResponse response); } ### 4、EsfCommunitySyncService ### @Slf4j @Service public class EsfCommunitySyncServiceImpl implements IEsfCommunitySyncService { @Override public void downloadErrorLogListByBatchNo(String batchNo, HttpServletResponse response) { List<EsfCommunitySyncLog> list = esfCommunitySyncLogService.selectList(new EsfCommunitySyncLog().setBatchNo(batchNo).setStatus(0)); if (CollectionUtils.isEmpty(list)) { return; } List<EsfCommunitySyncLogDownloadRes> result = BeanCopyUtil.copyListProperties(list, EsfCommunitySyncLogDownloadRes::new); HttpServletResponseUtils.downloadExcel(response, EsfCommunitySyncLogDownloadRes.class, result, batchNo + ".xlsx", null); } } ### 5、HttpServletResponseUtils ### public class HttpServletResponseUtils { public static void downloadExcel(HttpServletResponse response, Class clazz, Collection collection, String fileName, String sheetName) { Assert.notNull(response, "response 为空"); Assert.notNull(clazz, "clazz 为空"); Assert.notEmpty(collection, "collection 为空"); Assert.hasText(fileName, "fileName 为空"); if (!StringUtils.hasText(sheetName)) { sheetName = "sheet1"; } // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); try { // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 String urlEncoderfileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + urlEncoderfileName + ".xlsx"); EasyExcel.write(response.getOutputStream(), clazz).sheet(sheetName).doWrite(collection); } catch (IOException e) { log.error("downloadExcel 报错, 报错信息:{}", e); throw new RuntimeException(e); } } } ## 二、服务消费者:house-platform-api ## ### 1、ITmallSyncEsfCommunityApi ### 方法的返回值设置为Response @FeignClient(value = "${feign.client.config.good-house-push.name}", url = "${feign.client.config.good-house-push.url}", path = "${feign.client.inner.path}", configuration = CatFeignConfiguration.class) public interface ITmallSyncEsfCommunityApi{ @ApiOperation("根据批次号,下载同步二手房小区的错误日志列表") @GetMapping({ "/api/tmall/syncEsfCommunity/logList/downloadError/{batchNo}"}) Response downloadErrorLogListByBatchNo(@PathVariable(name = "batchNo") String batchNo); } ### 2、TmallCityOpenController ### 将服务提供者的文件下载响应的响应体(文件内容)复制到服务消费者对外的文件下载响应体中 @Slf4j @Api(tags = "天猫城市开通管理") @RestController @RequestMapping(value = "/tmall", produces = "application/json;charset=utf-8") public class TmallController { @Autowired private ITmallSyncEsfCommunityApi tmallSyncEsfCommunityApi; @ApiOperation(value = "根据批次号,下载同步二手房小区的错误日志列表") @GetMapping("/cityopen/syncEsfCommunity/logList/downloadError/{batchNo}") void downloadErrorLogListByBatchNo(@PathVariable(name = "batchNo") String batchNo, HttpServletResponse response) { InputStream inputStream = null; try { Response serviceResponse = tmallSyncEsfCommunityApi.downloadErrorLogListByBatchNo(batchNo); Response.Body body = serviceResponse.body(); inputStream = body.asInputStream(); BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + batchNo + ".xlsx"); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(response.getOutputStream()); int length = 0; byte[] temp = new byte[1024 * 10]; while ((length = bufferedInputStream.read(temp)) != -1) { bufferedOutputStream.write(temp, 0, length); } bufferedOutputStream.flush(); bufferedOutputStream.close(); bufferedInputStream.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } [Java]: https://blog.csdn.net/weixin_43453386/article/details/84788317 [Mysql]: https://blog.csdn.net/weixin_43453386/article/details/88667709 [Spring]: https://blog.csdn.net/weixin_43453386/article/details/124900806 [SpringBoot]: https://blog.csdn.net/weixin_43453386/article/details/84788714 [MyBatis_MyBatis-Plus]: https://blog.csdn.net/weixin_43453386/article/details/84788053
相关 文件下载 String filePath = wenjianService.getlujing(attachId); String fileName= wenjian 川长思鸟来/ 2022年08月23日 00:52/ 0 赞/ 34 阅读
相关 文件下载 下载图片或者文件有那么几种方法,下面详细总结。 1,js方法 function downloadFile(url){ var elemIF Bertha 。/ 2022年08月06日 15:29/ 0 赞/ 137 阅读
相关 文件下载 对应文件上传的下载 1、javaweb方法实现: public String download(){ try { //获取文件ID ゝ一世哀愁。/ 2022年07月13日 14:08/ 0 赞/ 240 阅读
相关 下载文件 //设置文件MIME类型 response.setContentType(getServletContext().getMimeType(f 浅浅的花香味﹌/ 2022年06月17日 05:44/ 0 赞/ 219 阅读
相关 文件下载 下载就是向客户端响应字节数据,原来响应的都是html的字符数据,现在 把一个文件变成字节数组,使用response.getOutputStream()来各应给浏览器! 下载 - 日理万妓/ 2022年06月10日 03:10/ 0 赞/ 164 阅读
相关 文件下载 导入jar commons-fileupload-1.3.1.jar commons-io-2.2.jar 在jsp中添加超链接,设置要下载的文件 叁歲伎倆/ 2022年05月06日 10:44/ 0 赞/ 230 阅读
相关 文件下载 html 标签 点击自动下载 <button> <a href = "http://localhost/day.zip"> 布满荆棘的人生/ 2022年03月18日 13:56/ 0 赞/ 540 阅读
相关 下载文件 import javax.servlet.http.HttpServletResponse; import java.io.BufferedOutputStre 骑猪看日落/ 2022年01月11日 02:57/ 0 赞/ 298 阅读
相关 文件下载 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ub 川长思鸟来/ 2021年12月15日 00:53/ 0 赞/ 361 阅读
还没有评论,来说两句吧...