如何获取grails应用程序的绝对路径

时间:2013-04-25 22:14:55

标签: grails

我希望用户能够在我的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时则不行。

2 个答案:

答案 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")