2010-05-24 13 views
0

J'essaie d'afficher dynamiquement une image que je stocke dans le magasin de données google sous forme de blob. Je ne reçois aucune erreur mais je reçois une image cassée sur la page que je vois.en utilisant des grails et google app engine pour stocker dynamiquement l'image sous forme de blob et la vue

Toute aide serait géniale!

Je le code suivant dans mon Grails application

classe de domaine a les suivantes

@PrimaryKey 
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
Long id 

@Persistent 
String siteName 

@Persistent 
String url 

@Persistent 
Blob img 

@Persistent 
String yourName 

@Persistent 
String yourURL 

@Persistent 
Date date 

static constraints = { 
    id(visible:false) 
} 

méthode Mon enregistrer dans le contrôleur a cette

def save = { 
    params.img = new Blob(params.imgfile.getBytes()) 
    def siteInfoInstance = new SiteInfo(params) 
    if(!siteInfoInstance.hasErrors()) { 
     try{ 

      persistenceManager.makePersistent(siteInfoInstance) 
     } finally{ 
      flash.message = "SiteInfo ${siteInfoInstance.id} created" 
      redirect(action:show,id:siteInfoInstance.id)  
     } 
    } 

    render(view:'create',model:[siteInfoInstance:siteInfoInstance]) 

} 

Mon point de vue a le

suivant
<img src="${createLink(controller:'siteInfoController', action:'showImage', id:fieldValue(bean:siteInfoInstance, field:'id'))}"></img> 

et la méthode dans mon contrôleur qu'il appelle à afficher un lien vers l'image ressemble à ceci

def showImage = { 

    def site = SiteInfo.get(params.id)// get the record 
    response.outputStream << site.img // write the image to the outputstream 
    response.outputStream.flush() 
} 

Répondre

0

êtes-vous en revenir un octet correct [] de votre fixation? IIRC, grails a quelques problèmes avec les tableaux d'octets et les fichiers sur le moteur de l'application, car il utilise un résolveur multipart basé sur les fichiers qui n'est pas kasher avec la liste noire JRE.

Essayez aussi retourner un type de contenu de votre réponse:

Response.ContentType = "image/png";