将图像保存为mongoDB中的base64

时间:2018-01-03 03:10:23

标签: mongodb reactjs express

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

  1. 这是一个好方法吗?
  2. 我应该压缩base64,如果是的话怎么样?
  3. 应该使用特定服务器来处理此任务吗?
  4. 我的后端是node express,前端是ReactJS。

    谢谢

1 个答案:

答案 0 :(得分:0)

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

node中执行此操作有很多不同的模块。 JIMP是一个相当不错的版本,它具有大量内置函数,例如调整图像大小并将其转换为二进制文件,可以是Bufferbase64