我目前正在使用Intellij构思grails项目。
我想将用户个人资料图片上传到项目目录。 例如的 E:\ MyProject的\ userUploads
目前我正在尝试使用以下代码获取路径
def filePath = request.getSession().getServletContext().getRealPath("/")
但是当我打印文件路径时,我得到:
C:\用户\ Rahul.Mahadik \应用程序数据\本地\ TEMP \ Tomcat的docbase.2236924879274963579.8080 \
此外我还尝试了"servletContext.getRealPath("/")"
这也是为了获取当前目录的路径,但获得与上面相同的路径
由于
答案 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