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 に答える