在grails控制器中获取应用程序路径
Get Application path in grails controller
我目前正在为 grails 项目使用 Intellij idea。
我要上传,用户头像到项目目录。
例如E:\MyProject\userUploads
目前我正在尝试使用以下代码获取路径
def filePath = request.getSession().getServletContext().getRealPath("/")
但是当我打印文件路径时,我得到:
C:\Users\Rahul.Mahadik\AppData\Local\Temp\tomcat-docbase.2236924879274963579.8080\
我也试过"servletContext.getRealPath("/")"
这也是为了获取我当前目录的路径,但得到的路径与上面相同
谢谢
您应该了解在 Grails 中构建和 运行 网络应用程序的流程。
当您启动 run-app
命令时,Grails 会编译您的代码并创建 war 文件 - 这是一个 web 应用程序存档。
为了 运行 这个 war 文件你需要一些网络服务器。 Grails 有其嵌入式 Tomcat 服务器,因此它获取 war 文件并将其部署到 Tomcat.
Tomcat 有自己的文件夹,其中部署了 Web 应用程序存档。因此,您的应用程序的路径是 Tomcat 服务器正在 运行 安装您的应用程序的某个文件夹的路径。这就是为什么你看到
C:\Users\Rahul.Mahadik\AppData\Local\Temp\tomcat-docbase.2236924879274963579.8080\
显然,Tomcat 不知道您的项目位于何处。所以当你的应用程序是 运行ning.
时,你无法获取此路径
将文件存储路径设置为可配置是一种常见的做法。
您可以在本主题中了解如何使用外部配置文件:
通过在 application.yml
中添加以下内容解决了我的问题
server.contextPath: /
或
如果我 运行 应用 grails -Dapp.context=/ run-app
我目前正在为 grails 项目使用 Intellij idea。
我要上传,用户头像到项目目录。 例如E:\MyProject\userUploads
目前我正在尝试使用以下代码获取路径
def filePath = request.getSession().getServletContext().getRealPath("/")
但是当我打印文件路径时,我得到:
C:\Users\Rahul.Mahadik\AppData\Local\Temp\tomcat-docbase.2236924879274963579.8080\
我也试过"servletContext.getRealPath("/")"
这也是为了获取我当前目录的路径,但得到的路径与上面相同
谢谢
您应该了解在 Grails 中构建和 运行 网络应用程序的流程。
当您启动 run-app
命令时,Grails 会编译您的代码并创建 war 文件 - 这是一个 web 应用程序存档。
为了 运行 这个 war 文件你需要一些网络服务器。 Grails 有其嵌入式 Tomcat 服务器,因此它获取 war 文件并将其部署到 Tomcat.
Tomcat 有自己的文件夹,其中部署了 Web 应用程序存档。因此,您的应用程序的路径是 Tomcat 服务器正在 运行 安装您的应用程序的某个文件夹的路径。这就是为什么你看到
C:\Users\Rahul.Mahadik\AppData\Local\Temp\tomcat-docbase.2236924879274963579.8080\
显然,Tomcat 不知道您的项目位于何处。所以当你的应用程序是 运行ning.
时,你无法获取此路径将文件存储路径设置为可配置是一种常见的做法。
您可以在本主题中了解如何使用外部配置文件:
通过在 application.yml
server.contextPath: /
或
如果我 运行 应用 grails -Dapp.context=/ run-app