文件下载feign调用-ResponseEntity<byte[]>

controller
@ApiOperation(value = "下载文件", notes = "下载文件", httpMethod = "GET", response = WebResult.class)
    @RequestMapping(value = "/download", method = RequestMethod.GET)
    public void downloadFile(@RequestParam(name = "id") String id,
                             @RequestParam(name = "fileExt", defaultValue = "", required = false) String fileExt,
                             @RequestParam(name = "fileName", defaultValue = "", required = false) String fileName,
                             HttpServletRequest request, HttpServletResponse response) throws Exception {
        String fileId = fileInfoService.getFileIdByMainId(id, fileExt);
        GridFSFile gfsfile = mongoDbFileService.getFSFile(fileId);
        String realFileName = gfsfile.getFilename().replace(",", "");
        if (StrUtil.isEmpty2(fileName)) {
            fileName = realFileName;
        } else {
            fileName = fileName.concat(".").concat(FileUtil.getFileExt(realFileName));
        }
        //处理中文文件名乱码
        if (request.getHeader("User-Agent").toUpperCase().contains("MSIE") ||
                request.getHeader("User-Agent").toUpperCase().contains("TRIDENT")
                || request.getHeader("User-Agent").toUpperCase().contains("EDGE")) {
            fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
        } else {
            //非IE浏览器的处理:
            fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
        }
        // 通知浏览器进行文件下载
        //response.setContentType(gfsfile.getContentType());
        response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
        //gfsfile.writeTo(response.getOutputStream());
        GridFsResource gridFsResource = mongoDbFileService.convertGridFSFile2Resource(gfsfile);

        InputStream inputStream = gridFsResource.getInputStream();

        IOUtils.copy(inputStream, response.getOutputStream());
    }
fegin
@GetMapping(value = "/download")
    ResponseEntity<byte[]> downloadFile(@RequestParam(name = "id") String id,
                                        @RequestParam(name = "fileExt", defaultValue = "", required = false) String fileExt,
                                        @RequestParam(name = "fileName", defaultValue = "", required = false) String fileName);

调用方

@ApiOperation("附件下载")
    @GetMapping("/downloadAnnex")
    public ResponseEntity<byte[]> download(@NotNull(message = "文件ID不能为空") String fileId, @RequestParam(required = false,defaultValue = "") String key) {
        ResponseEntity<byte[]> responseEntity = fileSystemService.downloadFile(fileId, "", "");
        return responseEntity;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值