我有一个模板,其中一些图像来自文件系统,另一些来自项目图像文件夹。
模板中来自我的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格式下载模板时,图像不会显示。
截图:
有人可以告诉我哪里错了吗?
或者还有其他方法吗?
答案 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}"/>