【发布时间】:2020-11-23 22:11:52
【问题描述】:
我在哪里保存从节点 js 中用户上传的图像。我将博客保存在我的 mongodb 中,但是我在哪里保存从用户上传的图像,因为此时我将图像保存在 base64 中,不推荐这样做。
请向我推荐一些存储用户图像的服务。
【问题讨论】:
-
您可以将它们存储在服务器空间本身的某个目录中,也可以使用 s3 等外部服务来存储它们
标签: javascript node.js mongodb ejs
我在哪里保存从节点 js 中用户上传的图像。我将博客保存在我的 mongodb 中,但是我在哪里保存从用户上传的图像,因为此时我将图像保存在 base64 中,不推荐这样做。
请向我推荐一些存储用户图像的服务。
【问题讨论】:
标签: javascript node.js mongodb ejs
我会做的是使用存储而不是数据库来存储文件。
例如 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.
});
});
}
【讨论】: