javascript - 如何下载存储在 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 的事情,我也可以做邮件的事情)。我读过很多文章,它们首先将缓冲区数据保存到文件中,然后上传,但我不想这样做
解决方案
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
的缓冲区似乎是一个空缓冲区,所以上传可能不起作用?
推荐阅读
- xcode - NSSavePanel 缺少“shouldRunSavePanelWithAccessoryView”键?
- android - 使用离子构建混合移动应用程序并面临硬件后退按钮问题
- php - 如何使用 curl_multi 处理错误
- html - 取消选中复选框时计算
- failed-installation - Magento 2.3.4 安装卡在 58%
- r - 在 R 中将 UNIX 时间戳转换为 POSIXct
- java - 在 Jackson 中使用变量名映射对象
- php - 无法使用 Neo4J-PHP-不支持的媒体类型查询 Neo4J 数据库
- c# - EF Core - 更新实体
- python - 我有一个关于为多项式逼近创建 N x N 矩阵的问题