将用户的图像存储在Web应用程序中

时间:2011-04-30 13:23:10

标签: database web-applications storage file-storage

我目前正在使用JSP / Servlets开发一个Web应用程序 该应用程序允许用户为每个用户帐户上传图像文件。

存储图片的最佳方式是什么?
在回答之前,请考虑以下我想要的功能;

  1. 我现在正在使用MySQL,但可能会转移到其他数据库。

  2. 我可以将图像存储为平面文件,但我希望admin帐户可以选择备份整个数据库并稍后重新加载。理想情况下,备份/重新加载也应该与图像一起使用。 (即使备份是从不同的物理机器完成的,并且重新加载是从不同的机器完成的)

  3. 使用BLOB / CLOB是解决问题2的选项 但是,如果我的数据库变得非常大会怎样?

3 个答案:

答案 0 :(得分:6)

在您的情况下,我强烈建议您在数据库中使用blob字段并将图像存储在其中。主要是因为 是他们的正确位置。因此,创建一个Servlet,从数据库中检索指定用户的图像。例如,/userimage?name=john

关于您的“尺寸/效果”问题:

  • 数据库(除其他外)用于存储和交换大量数据。 所以,他们是最好的选择

  • 即使您将它们存储在其他网站上,它们仍会减少可用空间和性能。

  • 如果您真的想要管理大数据(> = 3TB,而不是您的情况),那么您可以将它们存储在文件系统中并将文件名保存在数据库中。有关详细信息,请查看this question

答案 1 :(得分:1)

将它们存储在文件系统中。它更快更简单。通常,在访问图像时,您必须先将其保存到文件中,然后才能使用它。您可以使用第三方工具检查图像。您可以将recordID存储在文件名中,以防止图像/记录关联被破坏。

许多其他人都赞同这一观点:http://forums.asp.net/p/1512925/3610536.aspx

答案 2 :(得分:-3)

只需将它们存储在数据库中...如果您的用户群“变得非常大”,您将有大量现金购买可以处理负载的球形数据库服务器(甚至是它们的农场),现在不是吗?