Java 在数据库中存储任何类型的文件

Java 在数据库中存储任何类型的文件,java,database,Java,Database,我将在J2EE中开发一个门户,供学生上传和下载数据。数据可以是任何东西,如PDF文件、doc文件、ppt文件,也可以是图像或视频 如何管理数据库中的数据?我猜您不关心数据的格式(也就是说,您不会在数据库级别查询数据),在这种情况下,您应该查看二进制数据类型 如果不知道您使用的是哪种数据库后端,我就不能说得更具体,但是这种数据类型的一些常见名称是BLOB,binary,varbinary,raw或image 此处的详细信息:将文件存储在重命名为存储文件名的记录id的文件系统中。这是较少的开销,并允

我将在J2EE中开发一个门户,供学生上传和下载数据。数据可以是任何东西,如PDF文件、doc文件、ppt文件,也可以是图像或视频


如何管理数据库中的数据?

我猜您不关心数据的格式(也就是说,您不会在数据库级别查询数据),在这种情况下,您应该查看二进制数据类型

如果不知道您使用的是哪种数据库后端,我就不能说得更具体,但是这种数据类型的一些常见名称是
BLOB
binary
varbinary
raw
image


此处的详细信息:

将文件存储在重命名为存储文件名的记录id的文件系统中。这是较少的开销,并允许更好的病毒扫描;“你上传了xyz病毒”


您甚至可以在另一台服务器上存储大型文件。备份更容易。

看起来您需要所有的备份。我只会给出方向,你们需要在这方面下功夫,若有问题,那个么具体问题也会随之而来

  • 将文件上传到您的文件系统、存储器或类似AmazonS3的地方。对于这个用途,类似于

  • 上传完成后,获取文件在存储服务器上保存的位置。比如说,
    /mnt/media/uploads/file.extension

  • 将数据库与存储文件元数据的表一起使用。一般来说,它看起来像:

    upload_id | file_name | file_location | user_id | timestamp
    
    其中,
    upload\u id
    是主键,
    file\u name
    是上传文件的原始名称,
    file\u location
    是文件在存储中的实际完整路径,
    user\u id
    是上传者的id,是
    用户
    表中的FK

  • 显示部分:使用此数据库显示
    文件名

  • 要下载,您可以有类似的内容,请注意,这并不限于提供图像文件。它可以服务于任何类型的文件

  • 现在,你们可能会想,我到底为什么要做这么多痛苦的事情,而不是把它作为二进制数据保存在数据库中?嗯,我不想深入讨论,我个人更喜欢这种方法,因为我认为数据库用于数据,文件系统用于文件。请参见此处的精彩讨论:

    希望这有帮助