Java 如何使用Oracle目录别名和BFILE对象将上载的文件写入磁盘?
我有一个JavaWebApp,它需要通过http上传文件,然后将它们存储在服务器上。文件需要与Oracle数据库中的特定记录相关联,因此数据库中将有一个表存储对关联记录的引用、对文件的引用以及其他描述性数据,如标题等。此表的选项似乎是:Java 如何使用Oracle目录别名和BFILE对象将上载的文件写入磁盘?,java,oracle,jakarta-ee,blob,Java,Oracle,Jakarta Ee,Blob,我有一个JavaWebApp,它需要通过http上传文件,然后将它们存储在服务器上。文件需要与Oracle数据库中的特定记录相关联,因此数据库中将有一个表存储对关联记录的引用、对文件的引用以及其他描述性数据,如标题等。此表的选项似乎是: 将文件存储为BLOB 存储对该文件的B文件引用 存储包含文件路径的字符串 我们更愿意将文件存储在数据库之外,因此我们不会将其存储为BLOB。DBA指出,他们的首选选项是将引用存储为BFILE。oracle.sql.BFILE对象提供对InputStream的
- 将文件存储为BLOB
- 存储对该文件的B文件引用
- 存储包含文件路径的字符串
我们更愿意将文件存储在数据库之外,因此我们不会将其存储为BLOB。DBA指出,他们的首选选项是将引用存储为BFILE。oracle.sql.BFILE对象提供对InputStream的访问以读取文件,但没有明显的写入方式 当存储目录的唯一引用是Oracle目录别名时,将文件数据写回磁盘的最佳方式是什么
我们认为simple java.io是写入文件的最佳方式,这意味着存储目录必须作为挂载提供给web应用程序服务器。由于webapp仍然可以使用该目录,因此我们决定不需要该文件,而只需将文件名存储在数据库中即可。根据:
- b文件是只读的。不能插入数据或以其他方式写入BFILE
- 不能使用JDBC创建新的BFILE。它们只在外部创建