我通过将其原始名称重命名为 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);
}
});
我读了wiki的 node-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/