node.js - 即时更改文件名以供下载

标签 node.js express download static-files

我通过将其原始名称重命名为 userID + '_' + new Date().getTime() + fileExt 来保存用户上传。我将文件属性存储在 mongodb 集合中:

{
name : String //generated name
, originalName : String //its original name
...
}

现在,当用户请求下载文件时,我必须向用户提供文件的原始名称(保存在数据库中,因此抓取它没有问题)。

针对以下请求

GET/users/:userId/uploads/:fileId?type=download

我有这个处理程序

//the mongoose query
UserUpload.findById(req.params.fileId).exec(function(err, doc){
 var fileLocation = __dirname + '/public/uploads/users/' + req.params.userId + '/' + doc.name;

 if(req.query.type && req.query.type == 'download') {
   // I don't know what should I do now
   // Downloader.download(fileLocation, newName);
 } 

 });

我读了wikinode-static module但不知道如何完成这项工作?

最佳答案

我在这里找到了答案:Download a file from NodeJS Server using Express .使用 express 和不使用 express 。

如果你使用Express就太简单了。这是 res.download 的文档.我不敢相信解决方案只是一行代码:

res.download('/path/to/file.ext', 'newname.ext');

关于node.js - 即时更改文件名以供下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22832108/

相关文章:

node.js - 未处理的拒绝 TypeError : dbUser. validPassword 不是函数 Sequelize Node React Passport

node.js - 在express中将 "hook"放入app.response函数的正确方法是什么?

php - 使用 htaccess 强制下载图像

mysql - 如何通过 ssh(在 Mac 上)使用 Node 的 mysql 库?谷歌搜索后,我仍然得到 "channel 3: open failed: connect failed: Connection refused"

node.js - 时刻等日历不工作

node.js - 快速提供静态文件: can't set headers after they are send

javascript - 如何在 Windows 上安装 n?

node.js - 在 Sails Express Node js 中如何在请求的页面加载时显示广告

python - 使用 Python 从 URL 下载图像给出损坏的结果

iOS 下载前获取文件大小