2017-04-07 43 views
0

我目前对grails项目使用Intellij创意。在grails控制器中获取应用程序路径

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

我目前正试图使用​​下面的代码

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

获得路径但当我打印的文件路径获得:

C:\用户\拉胡尔。 Mahadik \应用程序数据\本地的\ Temp \ Tomcat的docbase.2236924879274963579.8080 \

还有,我也尝试过类似上面

01我的当前目录的 "servletContext.getRealPath("/")"这也让路径,但得到相同的路径

谢谢

+0

这个“Grails的-Dapp.context = /运行的应用程序”解决 –

回答

0

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

当您启动run-app命令,Grails的编译代码和创建战争文件 - 这是一个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

+0

感谢@Taras科胡特。 –

+0

我已经完成了“grails -Dapp.context =/run-app”也 –

相关问题