gpt4 book ai didi

oracle - 如何在适用于 oracle 的 grails 中创建文件上传?

转载 作者:行者123 更新时间:2023-12-04 17:28:00 25 4
gpt4 key购买 nike

遇到以下问题:

我试图在 grails 中创建一个简单的文件上传功能。我刚刚创建了一个域类

byte[] rawFile

作为属性(property)。 Grails 为我完成了剩下的大部分工作。它适用于开发环境中的标准 hsqldb。

然后我将它部署到配置了 oracle db(瘦驱动程序)的服务器上。除了文件上传之外的所有内容都可以在 oracle db 上正常工作。对于文件上传,我得到一个(据我所知)

SQLException: ORA-01461: can bind a LONG value only for insert into a LONG



我尝试了几种方法来修复它(包括一些列映射到 blob 和使用 java.sql.blob 而不是 byte[]),但没有任何效果,我朝着我的代码不再独立于数据库的方向前进。

谷歌并没有真正帮助我,我的 grails 书籍也没有帮助。

我认为将文件保存到磁盘不是一个好的解决方案。

所以这是我的问题:

如何在适用于 oracle 的 grails 中创建文件上传?

更新 : 得到了一些额外的信息。设法重现了 Oracle XE 版的问题:

Hibernate 为 rawFile 创建了一个 VARBINARY(255) 列。所以我尝试上传一个 4 字节的文件并且它起作用了。

然后我手动将列的类型更改为“blob”,它可以处理更大的文件。

然后我添加了
static mapping = {
columns {
rawFile type:'blob'
}
}

到我的域类,它停止工作:

ERROR errors.GrailsExceptionResolver - [B cannot be cast to java.sql.Blob java.lang.ClassCastException: [B cannot be cast to java.sql.Blob



:-(

最佳答案

不要将类型设置为 blob 尝试增加 maxSize 约束:

static constraints = {
rawFile(maxSize: 20 * 1024 * 1024) // 20 MBs
// ...
}

关于oracle - 如何在适用于 oracle 的 grails 中创建文件上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4635809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com