我正在尝试生成许多 CSV 报告及其 PDF 版本,所有报告均经过压缩并与包含导出文件摘要的相应 JSON 对象一起发送。摘要将由用户在下载前查看。
一种简单的方法是从 API 返回一个 JSON 对象,然后从客户端生成报告,在本例中是在 React 中实现的。然而,这个解决方案有点麻烦,因为我似乎找不到一个强大的解决方案文件处理库,可以提供我需要的所有功能;即生成 CSV 文件、生成 PDF 文件,然后最终将其压缩以供下载。 如果有这样一个我不知道的解决方案,那么我会采取那条路线。
这让我想到了我目前正在追求的替代方案,即生成压缩文件夹以及摘要,并将其从端点返回给客户端。
如果可能的话,我如何从 Spring Boot 的端点同时返回 JSON 对象和压缩文件夹,以及如何在 JavaScript 中使用这样的响应。请注意,根据文档File attribute docs,将对象设置为自定义文件属性具有大小限制,并且其他文件系统不支持此类限制。
最佳答案
我建议的路径是对文件进行 base64 字符串编码并将其设置为返回对象的属性,然后可以将其序列化为 json
将文件转换为 Base64 字符串:
byte[] fileContent = FileUtils.readFileToByteArray(new File(filePath));
String encodedString = Base64.getEncoder().encodeToString(fileContent);
关于javascript - 如何从 Spring Boot 的端点同时返回 JSON 对象和压缩文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67856553/