grails在文件夹中显示图像
问题描述:
我正在尝试做一个Grails webapp,现在我试图在文件夹中显示所有图像。grails在文件夹中显示图像
为了做到这一点,我有以下:
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文件?
答
如果图像文件夹位于应用程序结构中,您可以直接创建指向图像的链接。在这种情况下,我认为你需要一个输出一个文件内容的控制器动作,以及另一个获取图像列表并请求文件内容的动作。
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:代码不进行测试,可能需要一些调整。
听起来不错,但我看不到你在哪里建立图像列表。 – itsme 2013-04-05 21:04:26
'IMAGES_DIR.listFiles()'返回图像列表。 – 2013-04-05 21:07:39
感谢您的答案,但我看不到从gsp页面listImages()和图像()和img之间的链接。你能解释一下吗?谢谢。 – itsme 2013-04-05 21:21:23