首页 > 解决方案 > 将 PDF/图片保存到 Kubernetes configmap 并在 springboot 应用程序中检索

问题描述

我需要将 pdf 存储在 kubernetes configmap 中,然后在 springboot 应用程序中检索它以进行进一步处理。我使用 pdf 创建了一个 configmap,使用 oc create configmap testpdf --from-file=datafile.pdf. 现在我有了带有 pdf 的 Base64 编码数据的 configmap,我已将其安装为卷安装。另外,我经历过,当我尝试访问该配置映射时,它会自动从 Base64 解码回字节流(如果我错了,请纠正我)。现在在我的 springboot 应用程序中使用检索 configmap 数据。

    @Value(${datafile.pdf})
    byte[] pdfdata;

    public ResponseEntity<byte[]> retrievePDF() {
       HttpHeaders headers = new HttpHeaders();
       headers.setContentType(MediaType.APPLICATION_PDF);
       headers.set("Content-Disposition", "inline; filename=\"" + "terms_conditions.pdf\"");
       headers.setContentLength(pdfdata.length);
       return new ResponseEntity<>(pdfdata, headers, HttpStatus.OK);
    }

现在,当我点击控制器时,我得到一个空白的白色 pdf,尽管保存在 configmap 中的 pdf 非常好。configmap 中的 Base64 编码值也是正确的(我也检查过使用 Base64 在线转换为 pdf)。

请求帮助。在过去的一周里,我陷入了困境。

标签: javaspring-bootkubernetesopenshiftconfigmap

解决方案


尝试编写这样的方法:

byte[] pdfData = ...


HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_PDF);

headers.setContentDispositionFormData("terms_conditions.pdf", "terms_conditions.pdf");
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");

ResponseEntity<byte[]> response = new ResponseEntity<>(bytes, headers, HttpStatus.OK);
        
return response;

如果您的 pdfData 数组真正代表您的 PDF,它应该可以工作。


推荐阅读