You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

技术问询:将图片存储到文件系统具体指什么?是否存至资源文件夹?

理解图片存储到文件系统的具体含义

你好!我来帮你理清把图片从数据库Blob转到文件系统存储到底是什么意思,以及和资源文件夹的区别。

首先,文件系统存储图片的核心是什么?

简单来说,就是把图片以普通的文件形式(比如.jpg.png.webp这类格式)直接保存在服务器硬盘、独立存储设备或者分布式存储服务的目录结构里,而不是把图片的二进制数据编码成Blob存在数据库的字段中。

这时候数据库里不再存储图片本身,而是只存这个图片文件的访问路径(比如/uploads/2024/05/user_123_avatar.png)或者唯一标识,当程序需要展示图片时,就通过这个路径去文件系统里读取对应的文件。

是不是一定要存储到项目的资源文件夹里?

答案是不一定,这完全取决于你的项目规模和部署场景:

  • 如果你是在开发小型项目或者处于开发测试阶段,把图片放在项目的资源目录里是可行的,比如Spring Boot的src/main/resources/static/uploads、Node.js项目的public/uploads,这种可以算是“资源文件夹”的范畴,但这只是文件系统存储的一种小众场景。
  • 在生产环境中,更推荐把图片存在独立于项目代码的目录里:比如服务器上专门开辟的/var/www/app_images目录,或者挂载的独立存储盘,这样即使项目代码更新、重新部署,图片文件也不会被覆盖或丢失,也能避免项目包体积过大。
  • 另外,现在很多线上项目会用云对象存储服务(比如各类云厂商的OSS、对象存储桶),本质上这也是一种分布式文件系统,你把图片上传到这些服务的存储空间里,数据库只存对应的文件URL或存储键,这也是文件系统存储的延伸方案。

补充:和Blob存储的简单对比(帮你理解为什么要转)

  • Blob存数据库:优点是图片和业务数据一起管理,备份时不用单独处理文件;缺点是数据库体积会快速膨胀,查询性能下降,图片访问需要通过数据库中转,效率较低。
  • 文件系统存储:优点是图片访问直接通过静态资源服务器或文件服务,速度更快,数据库压力小,存储成本更低;缺点是需要额外处理文件的路径管理、权限控制、备份策略,还要编写上传下载的逻辑代码。

内容的提问来源于stack exchange,提问作者ganymede

火山引擎 最新活动