【问题标题】:grails display images in foldergrails 在文件夹中显示图像
【发布时间】:2013-04-05 19:03:14
【问题描述】:

我正在尝试做一个 Grails webapp,现在我正在尝试在一个文件夹中显示所有图像。

为此,我有以下几点:

def display(){
        def dir = new File("/tmp/images")
        def list = []
        dir.eachFileRecurse() { file ->
            def avatarFilePath = new File(file.path)
            response.setContentType("application/jpg")
            OutputStream out = response.getOutputStream();
            out.write(avatarFilePath.bytes);
            out.close();
        }
    }

所以使用上面的代码,我使用以下代码显示一张图片:

<img class="thumbnail" src='${createLink(controller: "images", action: "display")}' />

使用此代码,我正在显示一张图片。 如何显示该文件夹中的所有图像? 我需要建立一个列表吗?什么清单?输出流列表? 在这种情况下,我应该在我的 gsp 文件中放入什么?

【问题讨论】:

    标签: image grails gsp


    【解决方案1】:

    如果图像文件夹在应用程序结构中,您可以直接创建指向图像的链接。在这种情况下,我认为您需要一个控制器操作来输出一个文件的内容,以及另一个获取图像列表并请求文件内容的操作。

    class MyController {
      private static final File IMAGES_DIR = new File('/tmp/images')
    
      //get the list of files, to create links in the view
      def listImages() {
        [images: IMAGES_DIR.listFiles()]
      }
      //get the content of a image
      def displayImage() {
        File image = new File(IMAGES_DIR.getAbsoluteFilePath() + File.separator + params.img)
        if(!image.exists()) {
          response.status = 404
        } else {
          response.setContentType("application/jpg")
          OutputStream out = response.getOutputStream();
          out.write(avatarFilePath.bytes);
          out.close();
        }
      }
    
    }
    

    你的 gsp 可以做类似的事情

    <g:each in="${images}" var="img">
      <img class="thumbnail" src='${createLink(controller: "myController", action: "displayImage", params:[img: img.name])}' />
    </g:each>
    

    P.S:代码未经测试,可能需要一些调整。

    【讨论】:

    • 听起来不错,但我看不出你在哪里建立图像列表。
    • IMAGES_DIR.listFiles() 返回图片列表。
    • 感谢您的回答,但我在 gsp 页面上看不到 listImages() 和 image() 和 img 之间的链接。你能解释一下吗?谢谢。
    • 假设他的listimages是你的展示方式。您返回图像列表,然后通过服务器端调用“图像”操作循环显示每个图像。希望它足够清楚。
    • 好的,我把action改成displayImage,希望代码更清晰:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 2021-10-07
    相关资源
    最近更新 更多