如何下载存储在 express.js 内存中的缓冲区文件?
How do I download a buffer file which is stored in memory in 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 事情,我也可以做邮件事情)。我看过很多文章都是先把buffer的数据存成文件再上传,但是我不想这样
res.set({
"Content-Type": <content type of your file>,
"Content-Disposition": "attachment; filename=<name of your file>"
});
res.end(req.file.buffer);
这首先设置使浏览器下载文件的headers,然后发送文件内容。
但是您的 req.file.buffer
似乎是一个空缓冲区,所以上传可能没有成功?
说明:所以,基本上我正在尝试制作一个 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 事情,我也可以做邮件事情)。我看过很多文章都是先把buffer的数据存成文件再上传,但是我不想这样
res.set({
"Content-Type": <content type of your file>,
"Content-Disposition": "attachment; filename=<name of your file>"
});
res.end(req.file.buffer);
这首先设置使浏览器下载文件的headers,然后发送文件内容。
但是您的 req.file.buffer
似乎是一个空缓冲区,所以上传可能没有成功?