首页 > 解决方案 > 如何下载存储在 express.js 内存中的缓冲区文件?

问题描述

解释:所以,基本上我正在尝试制作一个 express.js 网站,我可以在其中上传文件并将其保存在数据库中,用户可以稍后下载它们。因此,我的想法是将文件(.jar、.txt 和 .json)转换为缓冲区数据并将其存储在 MongoDB 中。然后从 MongoDB 中获取缓冲区数据并下载该文件。所以,我通读了文档,找不到任何这样做的东西。

代码:没有什么可显示的,我有一个包含缓冲区数据的变量,我正在使用“express.js@4.17.1”。

为了测试,我目前正在使用 multer 上传文件,一旦单击“上传”,我将尝试下载相同的文件以节省时间(而不是从数据库中保存和获取),因此缓冲区数据当前存储在“req .file.buffer”。当我登录 "req.file" 时,我得到了这个

console.log(req.file)
{
  fieldname: 'fileupload',
  originalname: 'jg.txt',
  encoding: '7bit',
  mimetype: 'text/plain',
  buffer: <Buffer >,
  size: 0
}

结论:我想将缓冲区数据(req.file.buffer)转换为用户可以下载的可下载文件(稍后,使其可以作为电子邮件附件发送,但它们都需要文件路径和名字,所以一旦我弄清楚如何做 express.js 的事情,我也可以做邮件的事情)。我读过很多文章,它们首先将缓冲区数据保存到文件中,然后上传,但我不想这样做

标签: javascriptnode.jsexpressfilemulter

解决方案


res.set({
  "Content-Type": <content type of your file>,
  "Content-Disposition": "attachment; filename=<name of your file>"
});
res.end(req.file.buffer);

这首先设置导致浏览器下载文件的标题,然后发送文件内容。

但是您req.file.buffer的缓冲区似乎是一个空缓冲区,所以上传可能不起作用?


推荐阅读