【问题标题】:Get Application path in grails controller在 grails 控制器中获取应用程序路径
【发布时间】:2017-09-02 11:08:11
【问题描述】:

我目前在 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 -Dapp.context=/ run-app”运行应用程序解决了

标签: grails intellij-idea grails3.2.0


【解决方案1】:

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

当您启动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 不知道您的项目位于何处。所以在你的应用运行的时候是无法得到这个路径的。

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

【讨论】:

  • 谢谢@Taras Kohut。
  • 我也完成了“grails -Dapp.context=/ run-app”
【解决方案2】:

通过在application.yml 中添加以下内容解决了我的问题

server.contextPath: /

如果我使用grails -Dapp.context=/ run-app 运行应用程序

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多