javascript - 如何从 Spring Boot 的端点同时返回 JSON 对象和压缩文件夹

标签 javascript java reactjs spring-boot

我正在尝试生成许多 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/

相关文章:

javascript - 是否可以将混合模式应用于 css/javascript/canvas 中的文本?

javascript - 标题大写一句话?

javascript - 使页面居中不适用于正文选择器,但适用于 div 页面换行

java - 如何使用jackson(Java)反序列化Object中的json对象?

java - 新的 Java 8+ 分隔符(标点符号)——它们如何/在哪里使用?

java - 如何使用 Streams 将二维列表转换为一维列表?

javascript - 使用 Hooks 根据条件渲染状态(构建一个简单的剪刀石头布游戏)

javascript - Webpack require/import 在客户端上延迟执行,而不是在服务器上执行

javascript - 如何使用来自其他文件的 React 组件

javascript - 在 React 中创建了多过滤按钮,但每次单击其他过滤按钮时列表不会显示