3

我希望用户能够下载我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 时不工作。

4

2 回答 2

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

在邮件用户线程中找到它。

于 2013-04-26T00:14:08.407 回答
1

def abolutePath = request.getSession().getServletContext().getRealPath("/images/myimage.jpeg")

于 2013-04-25T23:32:05.177 回答