存储API图像的最佳方式



我目前正在使用Express和MongoDB构建的API进行个人项目。我计划在完成后部署它。

所以事情是,我想有许多图像为我的实体ParkRides显示他们的正面与旋转木马,卡片组件…

你对最佳实践有什么想法吗?我不知道我是否必须将它们存储在MongoDB中,直接存储在我的应用程序中,甚至使用AWS的S3桶。

图像是应用程序中使用的静态资产,高质量图像的大小可能很大。我个人建议您使用Aws S3,原因如下:

如果你选择将图像存储在数据库这将花费你很多,因为你要转换的图片在某些二进制形式存储在DB然后服务器将会做所有的前处理后存储和检索数据库的图像数据,不是一个有效的方式,而另一方面一个Aws s3 bucket是相当便宜和快得多,而且你可以很容易通过s3对象url访问的图像。大多数不必要的处理将由s3处理,如加密、解密和其他安全措施。另一方面,将资产直接保存在应用程序中并不是一个好的选择,因为图像的大小会变得很大,并且直接使用操作系统处理图像也不是一种有效的方法。

有几种方法可以做到:

1 -不推荐:保存在项目文件夹

不建议在这里存储这么多图像,因为它可能导致数据泄漏和丢失,项目文件夹在不需要的情况下变得太大,并且考虑最佳实践也没有多大意义。

但是,如果你想,这里有一个例子:

<<p>文件夹结构/strong>
/public
/images
img_name.png
img_name.png
...
/src
...

2 -不建议:将所有图像存储在Mongo DB中。

不建议这样做,因为数据库太大太笨重,它还需要base64转换,Mongo DB文件大小限制为16MB。

如果你愿意,请读这个。

3 -建议:将所有图像存储在云存储服务中,如Amazon S3,用您的行id命名每个图像,例如:

数据库表:

Users
id - name - email - password
1  - John - ...   - ...

图像名称:

使用row id =1.png

或连接表名=user1.png

最新更新