繁体   English   中英

如何以一种宁静的方式将来自 Node.js 的私有文件夹中的图像提供给网站/应用程序?

[英]How to serve images from a private folder from Node.js to a website/application in a restful manner?

嘿,如何以一种宁静的方式将来自 Node.js 的私有文件夹中的图像提供给网站/应用程序? 我目前将图像保存在公共文件夹中的 img 文件夹中,同时将图像的 ID 保存在数据库中,当用户转到他的个人资料时,通过查找图片 ID 并设置路径来加载他的图片将图片设置为 public > img > id,但是由于两个原因这并不好......

一:图片对任何人都公开... 二:这意味着所有图片都被加载,因为图片在网站的资源中......

可能还有更多问题......但我试图弄清楚如果我将图像的路径更改为私人文件夹,如何提供它,我如何允许网站询问用户的个人资料图片并能够将其提供回来,或者用户是否在 android 应用程序上访问他的个人资料?

另外,如果图像是服务器,是静态的还是什么,我确实计划在将来使用 Nginx ......

更新 - 对于使用res.sendFile Express 4.x

app.get('/user/:uid/photos/:file', function (req, res) {
  var uid = req.params.uid
  var file = req.params.file

  req.user.mayViewFilesFrom(uid, function (yes) {
    if (yes) {
      res.sendFile('/uploads/' + uid + '/' + file)
    } else {
      res.status(403).send("Sorry! You can't see that.")
    }
  })
})

包括针对恶意上行路径/../安全性。

老的

  var fs = require('fs')
    
    function(req, res) {
      var id = req.param('id')
      fs.exists('/private/img/'+id, function(exists) {
        if(exists) res.sendfile('/private/img/'+id)
        else res.end('err')
      })
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM