- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是新 express ,nodejs,mongodb。我正在建立一家服装店的网站。他们希望经常上传图像,也许每两天就会上传新图像,并且这些图像需要快速显示在网站上,即缩略图。单击该图像将显示该产品的详细信息,等等。
我的问题是存储图像的最佳方法是什么?
最佳答案
我们在哪里存储图像?
MongoDB中的解决方案#1
因此,第一个解决方案是将图像存储在MongoDB内部。它可以容纳图像文件或任何文件类型。因此,您可以获取文件并将其绑定(bind)到MongoDB内部的记录,然后将其直接保存到数据库中。
通过这种方法,可以将特定服装的描述页面与其对应的图像绑定(bind)在一起变得容易,因为您可以将该图像直接嵌入到该页面的开发中,并且客户会对该方法感到满意,因为当用户检索详细描述时该服装的页面中随附了该图像。
因此,这就是一种可能的解决方案,只需拍摄图像并将其直接存储到MongoDB中即可。
但是,我建议这是一个不好的方法。这样做的原因是,您可以告诉客户是否存在回退,因为他们通常会根据其Mongo副本使用的存储量来为Mongo实例付费。
因此,他们用尽了更多的存储空间,便每月支付更多的钱。
例如,上次我检查MLab的使用时,每GB收取15美元。因此,托管1GB图像所需的客户费用为$ 15。
对于另一个电子商务网站,我们正在谈论3GB简易存储,它或多或少地转换为330张图像,平均每月15美元。
因此,如果他们的项目经理中的一位每天上载一件新衣服,我们将很快谈论巨额成本。
因此,我个人认为,直接将任何类型的文件类型存储在MongoDB中确实不是一种选择,因为这样做会导致非常昂贵的成本。
因此,这只是一种可能的解决方案。
服务器上附加的高清解决方案#2
因此,让我们看一下您可能会使用的第二种解决方案。您可能会使用 bundle 在Express服务器上的硬盘驱动器。因此,当将此应用程序部署到某些云环境(例如Heroku,Digital Ocean,Linode或AWS)时,通常会获得一个与应用程序关联的硬盘驱动器。
因此,也许您拍摄了图像并将其放置在本地硬盘驱动器中。这种方法是绝大多数在线帖子和文章所倡导的:
How to upload, display and save images using node.js and express
https://appdividend.com/2019/02/14/node-express-image-upload-and-resize-tutorial-example/
https://medium.com/@nitinpatel_20236/image-upload-via-nodejs-server-3fe7d3faa642
就以上我收集的三个文档而言,您已经有了一个相当强大的蓝图。
每个人说的都是文件,然后将其保存到本地硬盘中。在这篇特别的文章中:
https://alligator.io/nodejs/uploading-files-multer-express/
他们正在显示此代码:
const storage = multer.diskStorage({
destination: 'some-destination',
filename: function (req, file, callback) {
//..
}
});
multer
的图像上传库,该库提供了
diskStorage()
引擎,用于将图像上传到磁盘。
关于node.js - 为mongodb网站expressjs存储图像的最佳方法是哪一种?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55963408/
基于此答案的问题:https://stackoverflow.com/a/18650183/4478897 我试图找到这个解决方案,但似乎没有任何效果符合我的需要。 集群 expressjs 和 so
我有一个使用 Sequelize.js 作为 ORM 运行的快速应用程序。我的 express 应用程序从我的主要 Rails 应用程序接收请求,并且由于跨域策略,这些请求是使用 getJSON 执行
如何处理同步错误并保证在同一代码中出现错误? 这是我的代码,但不确定其工作正常,有什么想法吗? helpers.list({ limit: 1 })
在我的 ExpressJS 代码中,我限制主体大小如下: app.use(bodyParser.urlencoded({ limit : "512kb", extended: fals
我有一个看起来像这样的对象: editinvite: { _id: '', title: '', codes_list: [] } 问题是我无法在 NodeJS 应用程序中访问codes_
我正在尝试让我的nodeapp 使用express 工作。 我已经通过 nginx 设置了反向代理以使用 https://dank.ml/api/v1但每当我启动我的应用程序时,它都不想检测 / 响应
我完全失去了理智: 我有一个快速应用程序:以下是此示例的几个文件的快照: 应用程序.js -模型 --Event.js --Match.js 路线 --matches.js app.js: globa
我有我的nodejs项目,我想将记录器与我的route.js分开以获得干净的代码。 但是我遇到了下一个问题,当我尝试将记录器加载到route.js 文件时,它会显示下一个错误: TypeError:
我在 MEAN 应用程序中的模板缓存方面遇到一些困难。我有一个导航栏,它使用条件逻辑来显示/隐藏向用户显示的按钮。当用户点击页面时,这些值将被设置为 null 或 false,但是一旦他们登录,这些值
是否可以根据可选路线创建不同的查询? app.get('/:genre/:book?', function (req, res) { var genre = req.params.genre; v
我正在尝试学习 ExpressJS,并且遇到了这段代码。我似乎无法理解 app.use 函数,并且文档对我来说也不清楚。当调用 app.use 时,此特定示例代码中的/public 目录到底发生了什么
我正在开发一个学校管理系统。当老师发送发布请求时,我在后端创建一个路由内的全局对象。所以当多个老师访问服务器时,会创建多个全局对象......或者每个老师访问同一个对象?(会被重写同一个对象吗?) 最
我有一个用 typescript 编写的小型微服务,在 AKS 上的 kubernetes 集群中运行。我使用 Helm 生成了入口 apiVersion: extensions/v1beta1 ki
我需要将 JSON 发送到我的服务器,但 POST 请求显示为空正文。这是我在前端的 typescript : function sendData() : void { console.log("Se
这是我的 app.js import path from 'path'; import bodyParser from 'body-parser'; import express from 'expr
我一直在使用 ExpressJS 来促进文件上传,但据我所知,您可以将文件上传到任何路由,无论它是否处理它。 说我有 app.post('/photos/upload', photos.upload)
我正在阅读 Express.JS 4.x API,并且很好奇他们是如何设置的。这是我对正在发生的事情的理解:在 Express.JS 4.x API 的示例代码中,express 模块被导入并分配给变
我有以下注册页面 form(method='post', action='users/register') .form-group label Name inp
我有诸如 :id/comments/、:id/otherRoute 等路线。对于这些路线,我需要创建新的 Controller 。例如: let id: number = +req.params["i
嘿,我有一个使用 Express.js 和 Handlebars 运行的网站,该网站的导航栏和侧边栏在所有页面上都保持相同。当我路由时,它仅更改页面容器 {{{body}}}。 有没有一种方法可以让我
我是一名优秀的程序员,十分优秀!