如何使用Grails将文件存储在数据库中

时间:2009-04-06 13:07:10

标签: grails file-upload

我需要使用Grails将文件存储在数据库中。所以,你知道我怎么做吗?我应该在域类中使用哪种数据类型(byte []可能是一种解决方案)?

5 个答案:

答案 0 :(得分:7)

请参阅Grails User Guide中有关上传文件的章节。也可以使用java.sql.Blob作为二进制内容的类型(在处理大文件时更可取。)

答案 1 :(得分:5)

或者,将文件存储在磁盘上,并将其路径存储在数据库中。在磁盘上访问该文件通常比在db中访问文件更快。但当然,这实际上取决于您在应用程序中的需求。但要注意这个替代方案。

答案 2 :(得分:3)

在使用列映射更新或生成数据库时,可以强制域对象使用特定类型:

byte[] orgFile

static mapping = {
   columns { 
    orgFile type:'blob'
   }
}

到目前为止,这对我有用;)

答案 3 :(得分:2)

我遇到了同样的问题。我需要做的就是转到数据库(Oracle)并将列类型从RAW更改为Blob。 (实际上我必须删除该列,然后创建一个新列)。 我无法找到如上所述使用“java.sql.Blob”的方法。我发现了这个this (converting from bytes to Blob),但它看起来有点复杂。

答案 4 :(得分:0)

我最近在域类中使用byte []来存储文件,它工作正常,直到我将我的应用程序从“HSQLDB”移动到“Oracle Express”。 在Oracle上,byte []被映射到一个原始对象而不是blob ...(不确定究竟是什么错误)并且我最终通过使用java.sql.blob来解决问题