首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以restful的方式将来自Node.js的私有文件夹中的图像提供给网站/应用程序?

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

Stack Overflow用户
提问于 2013-12-20 14:50:06
回答 1查看 2.3K关注 0票数 2

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

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

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

此外,如果图像是服务器端的,是静态的还是什么的,我确实计划在未来使用Nginx…

EN

回答 1

Stack Overflow用户

发布于 2013-12-20 14:57:48

更新-用于使用res.sendFile的Express4.x

代码语言:javascript
复制
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.")
    }
  })
})

针对恶意上行路径/../的安全性是included

年长的

代码语言:javascript
复制
  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')
      })
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20697924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档