我想在grails上使用groovy上傳圖像。 我的GSP頁面如下(我顯示原來的簡化版本)Groovy中的類拋出異常
<g:form controller="post" action="save" enctype="multipart/form-data">
My picture <input type="file" name="myPicture" />
<g:submitButton name="submit" value="Save"/>
</g:form>
我的域類如下:
class Post {
byte[] myPicture
static mapping = {
myPicture type: "blob"
}
我需要這種映射,否則MySQL將創建一個smallblob其是要小,以適應圖像
static constraints = {
myPicture(nullable:false)
}
}
在控制器我呼籲節省了操作的如下:
def save = {
def post = loadPost(params.id)
post.properties = params
if(post.save()) {
print "hallo world"
redirect(action:'list', params:params)
} else {
render(view:'edit', model:[post:post])
}
}
當我嘗試將圖像保存在數據庫時引發異常。
2009-04-27 18:16:07,319 [[email protected]] ERROR errors.GrailsExceptionResolver - java.lang.ClassCastException: [B cannot be cast to java.sql.Blob
org.codehaus.groovy.runtime.InvokerInvocationException:java.lang.ClassCastException:[B不能轉換到的java.sql.Blob
任何暗示這是爲什麼?
順便說一句,我已經看到一個教程,圖像被處理爲字符串,但它也不工作 。
什麼是您的loadPost()方法呢? – 2009-04-27 17:02:29
沒什麼特別的 private loadPost(id){ def post = new Post(); 如果(ID){ 交= Post.get(ID) } 返回交 } – Luixv 2009-04-28 11:27:51
@Miguel平提供了一段代碼是用於上載正確的,但並沒有解決類轉換異常。爲了「保存」圖像,必須使用方法getBytes() – Luixv 2009-04-28 11:29:54