Grails: -Как отобразить изображение в файловой системе - PullRequest
0 голосов
/ 03 сентября 2010

Мне нужно отобразить изображение, которое находится в файловой системе, а не в каталоге проекта в Grails .. Я использовал

< img src="${createLinkTo(dir: '/Users/ME/ddImages/reg/', file: '${userInstance.fileName}.jpg')}" alt="User Photo"/>

но это, похоже, не работает

, так что, какая помощь?

Ответы [ 2 ]

2 голосов
/ 03 сентября 2010

Кстати, тег 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 голосов
/ 14 октября 2014

Думаю, вы пытаетесь отобразить файл, которого нет в webroot вашего проекта.Вы НЕ МОЖЕТЕ сделать это, просто передав URL для вашего просмотра.Один из способов сделать это - прочитать файл изображения в виде потока, а затем записать поток байтов для просмотра.Например:

<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()
}

Это должно сделать это.Надеюсь, это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...