我允许用户上传文件,并想知道是否可以只允许上传文件的用户访问它。
目前我只是将这些文件上传到静态文件夹(公共)。
答案 0 :(得分:0)
只需设置一个路径来渲染文件(这会降低性能) 将文件保存为:filename.extension.userid在非公用文件夹中,例如名为upload的目录。
设置路线以捕获目录上传的请求:
app.get("/upload/:filename", function(req, res){
var fname = req.params.filename;
var userid = req.user.id; // RETRIEVE AUTHENTICATED USER ID
var fullname = fname+"."+userid;
fs.readFile(__dirname+"/../public/upload/"+fullname, 'base64', function(err, data){
if(err || !data) return res.status(404);
res.set('Content-Disposition', 'attachment; filename="'+fname+'"');
res.set('Content-Type', 'application/pdf'); // example for pdf
return res.end(data, 'base64');
});
});
答案 1 :(得分:0)
我无法找到您建议使用其他路线处理上传的原因。我能够发布到同一条路线。我需要做的就是包括路径并相应地设置它。
var folder = newPath = path.join(__dirname, '..', './uploads')
var newPath = folder + '/' + callback.fileName;
fs.writeFile(newPath, data, function(err) {
if (err) {
console.log(err)
} else {
//Do stuff
}
});

文件上传后,我就可以完成任务了。