【问题标题】:How to download pdf file using Feign Client?如何使用 Feign Client 下载 pdf 文件?
【发布时间】:2019-08-16 17:52:33
【问题描述】:

在我们的项目中,我们使用 feign 客户端来调用第三方服务。对于内容类型 application/json 它工作正常。但是我们有一个要求,即第三方服务 URL 返回 pdf 文件,而那个时候我们遇到了异常。

出于安全原因,我无法粘贴日志和代码,但如果有人分享我从 feign 客户端下载 pdf 文件的代码,这对我很有帮助。

提前致谢!!

【问题讨论】:

    标签: spring-cloud spring-cloud-feign


    【解决方案1】:

    您可以使用byte[] 作为返回类型。

    @FeignClient(url = "url", name = "name")
    public interface SomeFeignClient {
    
        @GetMapping("/give-me-a-pdf")
        byte[] getPDF();
    }
    

    您的服务只需调用

    public byte[] getPDF() {
       return SomeFeignClient.getPDF();
    }
    

    现在使用字节数组,您可以执行任何您想要的操作,例如使用保存文件

    FileUtils.writeByteArrayToFile(new File("pathname"), resource);
    

    或提供一个端点来下载文件(Spring boot 可以在不使用任何外部库的情况下返回几乎任何内容)

    @GetMapping("/pdf")
    ResponseEntity getPDF() {
    
        byte[] resource = SomeFeignClient.getPDF();
    
        return ResponseEntity.ok()
                .contentLength(resource.length)
                .contentType(MediaType.APPLICATION_PDF)
                .body(resource);
    }
    

    【讨论】:

    • 我想知道是否存在流模式而不是检索所有字节?因为这可能会导致内存问题,特别是当此控制器处于压力模式时,对于大型 pdf 文件...
    猜你喜欢
    • 2023-03-22
    • 2018-09-19
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多