图像未在.doc文件中呈现

时间:2013-04-02 05:27:01

标签: grails groovy gsp doc grails-2.2

我有一个模板,其中一些图像来自文件系统,另一些来自项目图像文件夹。

模板中来自我的grails应用程序的images文件夹的图像在doc文件中完美显示。我使用下面的代码来渲染这些图像:

<img src="${g.resource(dir: 'images', file: 'phone-1.gif', absolute: true)}"/>

但是我有一个来自文件系统(/ opt / profileImages文件夹)的图像。使用下面的代码在模板中呈现此图像:

查看:

<g:img uri="${g.createLink(controller: 'personalDetail', action: 'showUserProfileImage', absolute: true)}"/>

控制器:

def showUserProfileImage() {
    User user = springSecurityService.currentUser as User
    String profilePicturePath = "${grailsApplication.config.profilePictureDirectoryPath}/${user?.profilePicture?.fileName}"
    File file = new File(profilePicturePath)
    def img = file.bytes
    response.contentType = user?.profilePicture?.mimeType
    response.outputStream << img
    response.outputStream.flush()
}

这很好用,在浏览器中以及使用grails渲染插件下载的pdf中显示配置文件图像。

但问题是.doc格式文件。当我以doc格式下载模板时,图像不会显示。

截图:

enter image description here

有人可以告诉我哪里错了吗?

或者还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

在这里,您尝试从应用程序上下文中访问图像src。 所以你的来源应该是这样的。

<g:img uri="${profilePocturePath}" width="93px" height="100px"/>

参考此

<mvc:resources mapping="/images/**" location="file:/absolute/path/to/image/dir"/> 

答案 1 :(得分:0)

Kanwal Nain Singh解决方案仅在服务器在本地运行时才有效,但如果我从远程下载doc格式的模板,那么图像将丢失。问题是本地计算机中的文档搜索图像(/ opt / profileImages文件夹)。

以下代码完美运行:

动作:

def showUserProfileImage() {
    String profilePicturePath = "${grailsApplication.config.profilePictureDirectoryPath}/${params.id}"
    File file = new File(profilePicturePath)
    response.contentType = URLConnection.guessContentTypeFromName(file.getName())
    response.outputStream << file.bytes
    response.outputStream.flush()
}

标签:

<g:img uri="${grailsApplication.config.grails.serverURL}/user/showUserProfileImage/${userImageName}"/>