上传节点中的文件

时间:2016-11-01 16:25:09

标签: node.js express

我允许用户上传文件,并想知道是否可以只允许上传文件的用户访问它。

目前我只是将这些文件上传到静态文件夹(公共)。

2 个答案:

答案 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
  }
});




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