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

在grails控制器中获取应用程序路径,grails,intellij-idea,grails3.2.0,Grails,Intellij Idea,Grails3.2.0,我目前正在为grails项目使用Intellij idea 我想上传,用户档案图片到项目目录。 e、 g.e:\MyProject\userUploads 目前,我正在尝试使用以下代码获取路径 def filePath = request.getSession().getServletContext().getRealPath("/") 但当我打印文件路径时,我得到: C:\Users\Rahul.Mahadik\AppData\Local\Temp\tomcat-docbase.223692

我目前正在为grails项目使用Intellij idea

我想上传,用户档案图片到项目目录。 e、 g.e:\MyProject\userUploads

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

def filePath = request.getSession().getServletContext().getRealPath("/")
但当我打印文件路径时,我得到:

C:\Users\Rahul.Mahadik\AppData\Local\Temp\tomcat-docbase.2236924879274963579.8080\

我还尝试了
“servletContext.getRealPath(“/”)
这也是为了得到我当前目录的路径,但得到的路径与上面相同


谢谢

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

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

C:\Users\Rahul.Mahadik\AppData\Local\Temp\tomcat-docbase.2236924879274963579.8080\

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

使文件存储路径可配置是一种常见做法。
您可以在本主题中了解如何使用外部配置文件:

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

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

C:\Users\Rahul.Mahadik\AppData\Local\Temp\tomcat-docbase.2236924879274963579.8080\

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

使文件存储路径可配置是一种常见做法。
您可以在本主题中了解如何使用外部配置文件:

通过在
application.yml

server.contextPath: /


如果我使用
grails-Dapp.context=/runapp
运行app,则通过在
application.yml
中添加以下内容解决了我的问题

server.contextPath: /


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

运行应用程序,谢谢@Taras Kohut。我已经用“grails-Dapp.context=/run-app”和“grails-Dapp.context=/run-app”运行应用程序了。如果我用这个“grails-Dapp.context=/run-app”来运行应用程序,我已经用这个“grails-Dapp.context=/run-app”解决了