【问题标题】:Where do I save images uploaded from users in node js [closed]我在哪里保存节点js中用户上传的图像[关闭]
【发布时间】:2020-11-23 22:11:52
【问题描述】:

我在哪里保存从节点 js 中用户上传的图像。我将博客保存在我的 mongodb 中,但是我在哪里保存从用户上传的图像,因为此时我将图像保存在 base64 中,不推荐这样做。

请向我推荐一些存储用户图像的服务。

【问题讨论】:

  • 您可以将它们存储在服务器空间本身的某个目录中,也可以使用 s3 等外部服务来存储它们

标签: javascript node.js mongodb ejs


【解决方案1】:

我会做的是使用存储而不是数据库来存储文件。
例如 Amazon S3 或 Google Storage 存储桶。当您的用户上传图像时,您将图像本身发送到存储桶,检索 URL,然后将图像 URL 保存在您的博客文档中。

当您检索图像时,例如在您的博客“显示”页面上,您将 blog.imageUrl(或您所称的任何字段)添加到 img 标记。

实现本身取决于哪个存储提供程序你去,但通常当你上传一些东西时,你会从提供者那里得到一个承诺。解决返回的承诺后,图像 URL 通常可用。您先上传,然后更新您的博客文档。


就个人而言,我喜欢使用 Firebase Firestore。 (使用 Google 存储桶)这让一切变得非常简单。您安装 firebase npm 模块,并注册一个新的 firebase 应用程序。然后,您可以创建一个用于上传和存储图像的函数,如下所示:

const uploadImage = (blogId, image) => {
  const storageRef = firebase.storage().ref(`${blogId}`); // Reference to bucket
  storageRef.put(image)
    .then(() =>{
      storageRef.getDownloadURL()
        .then((url) => {
          console.log(url) // Gives you the URL to the uploaded image
          // You can update or create your blog entry in mongodb here,
          // and add the image url to the blog object.
        });
    });
}

【讨论】:

  • 为什么投反对票?这既解释了您将如何解决提问者所询问的问题,又提供了提问者可以上传文件的几个提供者/服务。
  • 这个有免费服务吗
  • 他们都提供慷慨的免费套餐!这同样适用于 firebase,它可能是最容易设置和使用的。查看 www.firebase.com
  • 如果它对你有帮助,请接受这个答案:-)
  • 嘿,你能告诉我将文件上传到 Firebase firestore 的完整过程吗?我已经完成了在 firebase.com 上创建存储的过程,但现在我需要从 tinymce 上传文件到 firestore 并返回tinymce 的网址。
猜你喜欢
  • 2012-09-27
  • 1970-01-01
  • 2019-05-04
  • 2023-01-30
  • 1970-01-01
  • 2011-05-30
  • 2016-08-10
  • 1970-01-01
  • 2014-07-12
相关资源
最近更新 更多