首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node.js -从DB下载文件和内容到客户端

node.js -从DB下载文件和内容到客户端
EN

Stack Overflow用户
提问于 2021-12-14 22:39:56
回答 1查看 75关注 0票数 -1

我想从dir和DB向客户机发送相同的请求文件和一些内容。

数据库查询- const derivatives = await Derivative.findAll();

这是res -

代码语言:javascript
复制
res.status(200).send({
      data: derivatives.map((derivative) => ({
        id: derivative.id,
        date: derivative.date,
      })),
    });

这是下载-

代码语言:javascript
复制
const fileName = derivatives.map((name) => name.wex);

res.status(200).download(__dirname, `/assets/${fileName}`);

我怎样才能把它加到我的答复中呢?

EN

回答 1

Stack Overflow用户

发布于 2021-12-15 05:28:09

HTTP允许您指定一个“内容处理”来指示是否应该将响应视为下载,但不支持任意发送下载,它必须是对请求的响应。对于单个请求,不能有部分响应是下载,而部分不是。

因此,如果您需要下载一个文件,并且需要使用一些JSON来显示一些UI,则需要在客户机中以某种方式处理这个问题。以下任一项:

  • 客户机发送请求,服务器返回包含下载URL和您想要发送的其他数据的JSON,然后客户端通过JavaScript
  • 请求下载URL客户端发送两个请求,一个请求下载,另一个请求其他数据;如果您需要关联这两个请求(例如,只想对数据库进行一次查找),这可能会使服务器上的事情复杂化,但在客户机上是最简单的。
  • 客户机发送一个请求,服务器返回一个包含JSON数据和文件数据的响应,该响应以某种方式打包(文件数据可能在JSON内部,但效率很低),它在客户机上解压缩(使用JavaScript),然后客户端构造一个Blob到“下载”(在这种情况下,数据已经下载了,所以这只需要保存一个文件)

您可以通过多种方式将文件和JSON数据打包在一起,这就是/u/Quentin所暗示的。将两者作为一个响应发送可能对性能更好,但您可能不需要这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70356391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档