将图像保存为mongoDB中的base64

问题描述 投票:0回答:1

我正在寻找将图像从手机上传到我的服务器的最佳方式。我目前正在使用html5打开相机并拍照,然后我将文件转换为base64字符串,然后我发送到服务器,然后将其保存在MongoDB中。我期待每天大约1000到1500个用户请求(上传图片),所以我有以下问题:

  1. 这是一个很好的方法吗?
  2. 我应该压缩base64,如果是的话怎么样?
  3. 应该使用特定的服务器来处理这个任务吗?

我的后端是node express,前端是ReactJS。

谢谢

mongodb reactjs express
1个回答
0
投票

这一切都取决于你的情况。通过流来读取和写入来自cdn的图像通常比从数据库读取和写入图像的二进制表示(即base64)更快。但是,如果从cdn读取,你的速度显然会受到你使用的服务的影响。今天,像亚马逊这样的公司可以以非常便宜的价格提供存储,所以如果你没有像学生项目一样构建业余爱好应用程序,你通常可以负担得起。存储图像的二进制表示实际上比存储图像本身的尺寸稍微大一些。您不压缩base64,在转换之前压缩图像。但是,如果您无法负担存储帐户,并且您知道您的用户不会上传那么多图像,则通常足以将图像的二进制表示存储在数据库中。例如,Mongo Atlas在其数据库集群上免费提供512 MB。如果可能,从主应用程序中划分应用程序的任务(如数据库请求和cdn服务)通常是一个不错的选择。这样您就可以划分硬件的CPU,内存等,从而为用户提供更快的读写任务。

node中有很多不同的模块可以做到这一点。 JIMP是一个相当不错的一个有大量内置函数,如调整图像大小并将它们转换为二进制,无论是Buffer还是base64

© www.soinside.com 2019 - 2024. All rights reserved.