Java 使用SpringHibernate上传和下载文件,这个方法很简单。有人能给我提供相同的指导吗。。。?

Java 使用SpringHibernate上传和下载文件,这个方法很简单。有人能给我提供相同的指导吗。。。?,java,spring,spring-mvc,file-upload,spring-security,Java,Spring,Spring Mvc,File Upload,Spring Security,我正在创建一个模块,其中我需要提供通过浏览器上传和下载任何文件的功能 我试图寻找实现我的要求的方法 数据库服务器:oracle10g 框架:Spring和Hibernate 前端:JSP 现在我有两个选择 将文件导入oracle(数据类型blob)数据库并使用BufferedOutputStream检索同一文件 我将在服务器上创建用于存储所有文件的文件夹。用户将在该位置上传这些图像。数据库将有一列来存储该文件的绝对路径,该绝对路径将在读取该文件时使用 例如,用户上传imageABC.jpg,应用

我正在创建一个模块,其中我需要提供通过浏览器上传和下载任何文件的功能

我试图寻找实现我的要求的方法

数据库服务器:oracle10g 框架:Spring和Hibernate 前端:JSP

现在我有两个选择

  • 将文件导入oracle(数据类型blob)数据库并使用BufferedOutputStream检索同一文件

  • 我将在服务器上创建用于存储所有文件的文件夹。用户将在该位置上传这些图像。数据库将有一列来存储该文件的绝对路径,该绝对路径将在读取该文件时使用

  • 例如,用户上传imageABC.jpg,应用程序将在D:\DIS21\Storage目录下上传该文件(更新名称为unique\u id.jpeg)\ 数据库路径中的列将由D:\DIS21\Storage\unique\u id.jpeg更新

    读取文件时,应用程序将读取路径D:\DIS21\Storage下的文件\


    我对方法和安全方面有点困惑。有人能给我提供相同的指导吗?。

    两种方法都有效。选项1的缺点是它会给数据库带来额外的I/O压力,但这取决于系统上的负载,这可能不是问题

    选项2的主要问题是它阻止了水平扩展,即如果使用率增加,而不将所有文件移动到某种网络文件共享上,则无法添加其他服务器。同样,这增加了网络和I/O开销,但可能是问题,也可能不是问题


    我已经建立了许多网站,将文件存储在数据库中,只要你采用良好的数据设计(主要是将blob拆分为它们自己的表),你就可以了。

    但是如果要上传数千个文件,那么它会工作吗?对不起,在再次阅读第二个选项之后,我发现我完全错了。第二种选择有什么错?我认为它应该是有效的。Thnaks pap…但是你所说的“主要是你应该将blob分割成它们自己的表”是什么意思?你所说的“良好的数据设计”是什么意思?Thnaks是什么意思。它可能有一个列,该列是文件名和描述,以及您希望与之一起存储的任何内容。您应该避免在“main”表中包含BLOB列作为内容。相反,创建一个文件内容表,该表的id是主表的外键,BLOB是内容。