Je veux télécharger une image en utilisant un groovy sur les grails. Ma page gsp est la suivante (je montre une version simplifiée de l'original)Exception de coulée de classe dans 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>
Ma classe de domaine est comme suit:
class Post {
byte[] myPicture
static mapping = {
myPicture type: "blob"
}
je besoin de cette cartographie autrement MySql va créer une smallblob qui est petite pour adapter les images
static constraints = {
myPicture(nullable:false)
}
}
au contrôleur, j'ai une action appelée sauvegarde qui est la suivante:
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])
}
}
L'exception est levée lorsque j'essaie de sauvegarder l'image sur la base de données.
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 ne peut pas être jeté à java.sql.Blob
Toute velléité pourquoi est-ce?
BTW, j'ai vu dans un tutoriel que les images ont été traitées comme des chaînes, mais cela n'a pas fonctionné aussi .
Qu'est-ce que votre méthode loadPost() faire? –
Rien de spécial private loadPost (id) { def post = new Post(); if (id) { post = Post.get (id) } post retour } – Luixv
@Miguel Ping a fourni un morceau de code qui est correct pour le téléchargement, mais ne résout pas le casting de classe Exception. pour "sauvegarder" l'image, la méthode getBytes() doit être utilisée – Luixv