使用 Spring 框架最适合存储上传图像的位置
Most suitable location to store uploaded images using the Spring Framework
我目前正在使用 Java、Spring 框架和 MySQL 无 ORM 为本地公司开发 Web 应用程序。这是我第一次处理上传文件。
我的情况是系统的一部分允许管理员用户上传商店商品的图片。
目前,我的所有资源(例如图像)都是这样组织和定位的:(位于我的 tomcat 服务器根目录下的解压 .war)
/resources/img/items/
/resources/img/items/缩略图
但是我已经意识到,当部署网络应用程序并且用户上传图像时,它将存储在上述位置。因此,当我重新部署时,上传的图像将不存在。
我的问题是,是否有更好的位置来存储这些图像?或者我错过了什么。在过去的几个小时里,我一直在研究,但似乎还没有走得太远。我将非常感谢任何可以提供一些知识的人。提前致谢。
存储文件的位置有很多选择。
MySQL:使用 BLOB 数据类型将它们存储在 MySQL 数据库中。优点是您将所有持久数据都放在一个位置,这在进行备份时很方便。另一方面,图像数据可能会使您的数据库迅速膨胀。
在文件系统中:将它们存储在文件系统中,例如在 /var/yourapp/uploaded-images。您需要告诉您的应用程序在哪里可以找到该目录。有很多方法可以做到这一点:
- 在您的 MYSQL 中创建配置 table 并将文件夹放在那里
- 让您的网站 container/server 提供该变量
- 通过 JNDI 服务
- ...
当磁盘因大量数据而崩溃时,请确保您有一个救援计划^^
分离数据库
由于图像数据可能会使您的数据库快速膨胀,您可能希望为图像使用另一个数据库。在许多体系结构中,二进制数据与 "real" 业务数据分开。
我想这些是您问题的典型解决方案。但是,没有标准建议选择什么取决于您没有提供或目前无法提供的事实:
- 图像是否对业务至关重要(技术图纸)
- 图像大小(8kB JPEG 对比 200MB 原始图像)
- 您的用户的需求是什么,他们是谁(SaaS 与小型 Intranet 应用程序)
- ...更多 ;)
无论你选择什么,都比在爆炸中存储文件要好war :)
我目前正在使用 Java、Spring 框架和 MySQL 无 ORM 为本地公司开发 Web 应用程序。这是我第一次处理上传文件。
我的情况是系统的一部分允许管理员用户上传商店商品的图片。
目前,我的所有资源(例如图像)都是这样组织和定位的:(位于我的 tomcat 服务器根目录下的解压 .war)
/resources/img/items/
/resources/img/items/缩略图
但是我已经意识到,当部署网络应用程序并且用户上传图像时,它将存储在上述位置。因此,当我重新部署时,上传的图像将不存在。
我的问题是,是否有更好的位置来存储这些图像?或者我错过了什么。在过去的几个小时里,我一直在研究,但似乎还没有走得太远。我将非常感谢任何可以提供一些知识的人。提前致谢。
存储文件的位置有很多选择。
MySQL:使用 BLOB 数据类型将它们存储在 MySQL 数据库中。优点是您将所有持久数据都放在一个位置,这在进行备份时很方便。另一方面,图像数据可能会使您的数据库迅速膨胀。
在文件系统中:将它们存储在文件系统中,例如在 /var/yourapp/uploaded-images。您需要告诉您的应用程序在哪里可以找到该目录。有很多方法可以做到这一点:
- 在您的 MYSQL 中创建配置 table 并将文件夹放在那里
- 让您的网站 container/server 提供该变量
- 通过 JNDI 服务
- ...
当磁盘因大量数据而崩溃时,请确保您有一个救援计划^^
分离数据库 由于图像数据可能会使您的数据库快速膨胀,您可能希望为图像使用另一个数据库。在许多体系结构中,二进制数据与 "real" 业务数据分开。
我想这些是您问题的典型解决方案。但是,没有标准建议选择什么取决于您没有提供或目前无法提供的事实:
- 图像是否对业务至关重要(技术图纸)
- 图像大小(8kB JPEG 对比 200MB 原始图像)
- 您的用户的需求是什么,他们是谁(SaaS 与小型 Intranet 应用程序)
- ...更多 ;)
无论你选择什么,都比在爆炸中存储文件要好war :)