我希望用户能够在我的web-app/images
文件夹
我已经建立了这样的行动:
def download () {
def file = new File (params.filepath)
if (file.exists()) {
response.setContentType("application/octet-stream")
response.setHeader("Content-disposition", "filename=${file.name}")
response.outputStream << file.bytes
return
}
}
然而,当我传入文件路径/images/myimage.jpeg
时,它找不到该图像。
问题
如何获取部署grails应用程序的绝对路径,以便我可以将代码更改为:
def file = new File (absolutePath + params.filepath)
注意
System.properties['base.dir']
在本地工作,但在部署到tomcat时则不行。
答案 0 :(得分:3)
这将在本地和已部署的战争中发挥作用:
class MyController implements org.springframework.context.ResourceLoaderAware {
ResourceLoader resourceLoader
def download() {
//org.springframework.core.io.Resource
def someImage = resourceLoader.getResource("/images/someImage.png").getFile()
}
}
在mail user thread中找到它。
答案 1 :(得分:1)
def abolutePath = request.getSession().getServletContext().getRealPath("/images/myimage.jpeg")