【问题标题】:Should uploaded images be stored on the server or react?上传的图像应该存储在服务器上还是响应?
【发布时间】:2021-02-16 22:16:53
【问题描述】:

我使用 react 和 node.js/mongodb。我在前端有一个表单,用于通过 React 上传图像。目前我将图像名称存储在 mongo db 中并将图像上传到服务器(我的 node.js 项目中的 img 文件夹)。这是正确的方法还是应该将图像名称存储在数据库中并将图像上传到我的反应项目中的 img 文件夹而不是节点服务器?

【问题讨论】:

  • 服务器上的图片没问题,不应该在你的 React 项目中。但通常我们有另一个静态文件服务器用于用户上传的图像和文件。两个常见的选项是 AWS s3 和谷歌云存储。让用户在执行代码的服务器(即本例中的节点服务器)上上传内容可能会让攻击者有机会上传一些看起来像图像但可以在您的服务器上运行并访问您的网站的代码的文件,不太可能,但可能发生,为什么要冒险。此外,与运行节点的服务器相比,S3 等静态服务器的成本要低得多。
  • 谢谢,我不想为服务付费,这就是为什么我认为我必须上传到 node.js 服务器。好吧,node.js 项目已部署到 Heroku,所以这实际上是我将图像上传到的地方
  • AWS S3 免费使用一年,有一定的使用限制,但这对您来说已经绰绰有余了。

标签: node.js reactjs


【解决方案1】:

这取决于您项目的需求,但一般来说,不应将图像存储在 React 项目中,也不应将它们保存在节点服务器上。

我这样做的方法是将我的图像上传到云存储,例如 Microsoft Azure 存储或 AWS S3,并将图像 URL 存储在 (mongodb) 数据库中。

这可确保您的图像即使在您的服务器被擦除或恢复时仍然存在。

希望对你有帮助

【讨论】:

  • 谢谢,我不想为服务付费,这就是为什么我认为我必须上传到 node.js 服务器。好吧,node.js 项目已部署到 Heroku,所以这实际上是我将图像上传到的地方
  • 那行不通,我有相同的设置并意识到我上传的图像每天都消失了 我环顾四周发现 Heroku 每天都会重新启动你的服务器到最后部署的状态(这意味着任何通过您的网站上传的上传图片,不包括您在部署时上传的网站中的资产文件夹)将丢失。请参阅此链接以供参考help.heroku.com/K1PPS2WM/…
  • 不确定您打算上传和存储多少张图片,但我在 azure 上有一些图片,我的平均每月账单约为 30 美分。
  • 你有 azure 的链接吗?
  • 这是一个指向 azure blob storage azure.microsoft.com/en-us/services/storage/blobs 的链接,这是一个关于如何将它与 nodeJS 一起使用的链接 docs.microsoft.com/en-us/azure/storage/blobs/… 这需要一些学习,但我发现它真的很值得。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
  • 2022-10-15
  • 2012-09-04
  • 2015-03-02
  • 2020-04-30
  • 2012-01-21
相关资源
最近更新 更多