既然你用的是express框架,那么先将某个目录设置为静态目录,如下:
app.use(express.static(path.join(__dirname, 'upload')));
然后将上传的文件存放于该目录,并返回文件路径,这样用户访问该路径就能下载文件。
如果想要对访问该路径的用户进行鉴权,那可以自己写个模块,express.static的源码也可以参考一下。
大致代码如下:
router.get('/upload/?', function (req, res) {
var filepath = req.originalUrl;
var filename = req.path.substr(1);
if (req.session.user.has(filename)) res.download(filepath);
})
如下是官方例子做了些改动:
app.get('/upload/:name', function (req, res, next) {
var options = {
root: __dirname + '/upload/',
dotfiles: 'deny',
headers: {
'x-timestamp': Date.now(),
'x-sent': true
}
};
var fileName = req.params.name;
res.sendFile(fileName, options, function (err) {
if (err) {
console.log(err);
res.status(err.status).end();
}
else {
console.log('Sent:', fileName);
}
});
})