【问题标题】:Convert base64 string of data into PDF file for download from API - NodeJS将 base64 数据字符串转换为 PDF 文件以便从 API 下载 - NodeJS
【发布时间】:2020-03-21 21:41:43
【问题描述】:

我配置了一个 nodeJS API,它连接到另一个 API 并检索一个数据对象,它是一个 Base64 字符串。

调用 API 端点的客户端需要下载一个由 base64 数据制作的 PDF 文件。

应该如何将数据返回给客户端,以便可以从浏览器转换/提示下载?这应该在客户端还是服务器端完成?

【问题讨论】:

  • this 回答你的问题了吗?

标签: javascript node.js pdf base64


【解决方案1】:

Base64 是 HTML 安全的,并且在您想要创建数据 URL 作为链接时具有实用性。这将允许预加载 PDF,以便用户在单击链接时立即获取文件。

但是,你只是想直接下载,所以只需要在服务器端将其转换为二进制,以减少与base64相关的网络开销,并尽可能保持客户端轻量(加载更少的数据,使用更少的资源)。

只需在响应中设置正确的内容类型(application/pdf,如果您想使用浏览器的 PDF 插件打开 PDF,或者application/octet-stream,如果您想触发常规下载)然后只需创建一个链接它带有经典的<a href=...。您还可以执行以下操作之一:

【讨论】:

  • 因此 NodeJS 连接到旧的 SOAP API。 soap API 提供 base64 数据对象。您是说将其转换为二进制然后将二进制作为响应发送给客户端吗?还是别的什么?
  • 那么客户端应该如何处理二进制api响应来触发下载只是数据的pdf文件。那部分我不确定。谢谢
  • 谢谢,如何在客户端设置内容类型。目前 API 正在返回一个包含 FileName 和数据(二进制或 base64)的对象。
  • @StuartM 你不应该返回一个对象,如果你想在Content-Disposition: attachment; filename="filename.pdf"中指定一个文件名,然后将文件作为二进制文件直接放在正文中
  • 这都是服务器端的吗?抱歉,我在 JavaScript 客户端找不到任何有关执行此操作的信息,因此是原始问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 2021-12-12
  • 1970-01-01
  • 2021-08-07
  • 2020-06-02
  • 2015-04-18
  • 2016-04-14
相关资源
最近更新 更多