在 mongoDB 中将图像另存为 base64



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

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

我的后端是节点快递,前端是ReactJS。

谢谢

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

有很多不同的模块可以在node中执行此操作。JIMP是一个相当不错的功能,具有大量内置功能,例如调整图像大小并将其转换为二进制,无论是Buffer还是base64

最新更新