【发布时间】:2018-06-05 20:20:07
【问题描述】:
我正在为我的项目使用 MEAN 堆栈。我在网上读到不建议将图像存储在数据库本身中,因此我不这样做。
为了解决这个问题,现在我设置了一个本地服务器(使用 express),并从那里提供我的静态图像文件。 现在我可以通过使用 URL 来使用该图像,例如:
http://localhost:4200/images/a.jpg
我计划最终通过使用像 heroku 这样的服务来托管这个快速应用程序。
在我的主网站中,我正在使用 MongoDb 和 NodeJs 实现身份验证(登录和注册)。 我希望根据特定的登录用户显示图像。
我是否应该将我的图像存储在以该用户的用户名命名的文件夹中,以便我可以相应地生成 URL 字符串并通过以下方式访问图像:
http://localhost:4200/user1/a.jpg
我的申请流程是否正确?这是我应该为特定用户访问图像的方式吗?
我在某处读到会存在安全问题,因为任何拥有图像 url 的人都可以访问它。我现在不太关心安全性,因为这是一个不适合许多用户的小项目。但任何关于不会出现此类安全问题的方法的建议都会有所帮助。
我是新手,任何建议都会有所帮助。 提前致谢。
【问题讨论】:
-
您可以将亚马逊 S3 添加到您的堆栈中。 S3 的 API 为照片上的每个 POST 操作返回一个 UUID 类型的 URL。然后,您的应用程序向 MONGO 插入一个元组,将 photo.URL 链接到 User.ID。要为用户获取照片集合,您可以在 mongo 查询上使用过滤器表达式,该表达式返回一组 S3 url,用作 img.src 标签的 UI 中的值。
标签: node.js mongodb angular express heroku