2010-09-03 49 views

回答

2

顺便说一下,grails标记被删除,使用资源;而该标签将让你的应用程序的基本路径内

http://www.grails.org/Tag+-+createLinkTo

文档的img标签 http://www.w3schools.com/tags/att_img_src.asp

可能值 “SRC”

An absolute URL - points to another web site (like src="http://www.example.com/image.gif") 
A relative URL - points to a file within a web site (like src="image.gif") 
+0

是的,我知道这是depricated先生......但事情是这样的。 Grails 不会为我工作,从来没有得到过像..所以什么是你想要在客户端上呈现的页面从服务器上的目录加载图像问题 – 2010-09-03 12:46:33

+0

- 抱歉,但它不工作这办法。客户端只能从绝对或相对URL加载图像(如Aaron提到的)。要么把图像应用程序下,或映射目录,使其可通过URL访问。 – 2010-09-03 15:28:23

0

认为你是想呈现不在您项目的webroot中的文件。您无法通过简单地将URL传递给您的视图来完成此操作。 你可以这样做的一种方式是将图像文件作为流读取,然后写入字节流以查看。 e.g:

<img src="${request.contextPath}/controllerName/getImage?filepath=${path_to_file_in_filesystem}" alt="whatever. alternatively, filename"/> 

然后在控制器的动作看起来就像这样:

def getImage(){ 
    def path = params.filepath 
    //returns an image to display 
    BufferedImage originalImage = ImageIO.read(new File(path)); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

    def fileext = path.substring(path.indexOf(".")+1, path.length()) 

    ImageIO.write(originalImage, fileext, baos); 
    baos.flush(); 

    byte[] img = baos.toByteArray(); 
    baos.close(); 
    response.setHeader('Content-length', img.length.toString()) 
    response.contentType = "image/"+fileext // or the appropriate image content type 
    response.outputStream << img 
    response.outputStream.flush() 
} 

应该这样做。希望这可以帮助某人。

相关问题