tolymark
tolymark

Reputation: 1

Cannot display an image from filesystem in grails

I'm new to grails (1.3.7) and I've been put in a strange situation with displaying an image from the filesystem. The one.png picture is put into web-app/images/fotos directory. The zz.gsp:

<img src="${resource(dir:'images/fotos', file:'one.png')}" alt="Nothing" />

related to the void action def zz = {} works fine. But if I intend to display the same picture in rawRenderImage.gsp:

  <body>
   <p>
     ${fdir}  <br/>   ${fname}      <!-- OK -->
   </p>
   <g:if test="${fname}">
      <img src="${resource(dir:'fdir',file: 'fname')}"   alt ="Nothing"/>
   </g:if>  
  </body>

the picture doesn't appear inspite of the parameters fdir and fname pass to the page. The action in the controller is:

    def rawRenderImage = {
//    def basePath = servletContext.getRealPath("/")
//      def basePath = grailsAttributes.getApplicationContext().getResource("/").getFile().toString() + "/images/fotos/"  
//      def basePath = grailsAttributes.getApplicationContext().getResource("/").getFile().toString()
//      def fname = params.photoId + ".png"
//      def fname = "/images/fotos/" + params.photoId + ".png"

basePath = "images/fotos"        // or basePath=”images” for /images/one.png
fname=”one.png”

        [fdir:basePath, fname:fname]
   }

Even direct assigns basePath=”images/fotos” and fname=”one.png” don't work, as well as any combinations with basePath to obtain the absolute path. Even the case when I put the picture in images directory doesn't work. I use netbeans, but it also doesn't work in console mode.

Help please.

Upvotes: 0

Views: 1003

Answers (1)

schmolly159
schmolly159

Reputation: 3881

When passing in your filename and directory as variables in the model, don't quote them in your tag's src attribute. Then the Groovy ${} evaluation will evaluate to the variables and not as Strings.

<g:if test="${fname}">
    <img src="${resource(dir:fdir,file:fname)}" alt ="Something"/>
</g:if>

Upvotes: 2

Related Questions