获取grails控制器中的应用程序路径

时间:2017-04-07 07:09:16

标签: grails intellij-idea grails3.2.0

我目前正在使用Intellij构思grails项目。

我想将用户个人资料图片上传到项目目录。 例如的 E:\ MyProject的\ userUploads

目前我正在尝试使用以下代码获取路径

def filePath = request.getSession().getServletContext().getRealPath("/")

但是当我打印文件路径时,我得到:

C:\用户\ Rahul.Mahadik \应用程序数据\本地\ TEMP \ Tomcat的docbase.2236924879274963579.8080 \

此外我还尝试了"servletContext.getRealPath("/")"这也是为了获取当前目录的路径,但获得与上面相同的路径

由于

2 个答案:

答案 0 :(得分:0)

您应该了解在Grails中构建和运行Web应用程序的流程。

当您启动run-app命令时,Grails会编译您的代码并创建 war 文件 - 这是 Web应用程序存档。 要运行此war文件,您需要一些Web服务器。 Grails有其嵌入式Tomcat服务器,因此它获取war文件并将其部署到Tomcat Tomcat有自己的文件夹,用于部署Web应用程序存档。因此,应用程序的路径是Tomcat服务器运行应用程序的某个文件夹的路径。这就是你看到

的原因
  

C:\用户\ Rahul.Mahadik \应用程序数据\本地\ TEMP \ Tomcat的docbase.2236924879274963579.8080 \

显然,Tomcat不知道您的项目位于何处。因此,当您的应用程序运行时,您无法获得此路径。

通常的做法是使文件存储路径可配置。 您可以在本主题中了解如何使用外部配置文件:How to use external .groovy config file in Grails 3

答案 1 :(得分:0)

通过在application.yml

中添加以下内容解决了我的问题
server.contextPath: /

OR

如果我使用grails -Dapp.context=/ run-app

运行应用