gpt4 book ai didi

Grails - 从 war 中运行时位于不同路径的图像

转载 作者:行者123 更新时间:2023-12-02 15:27:54 25 4
gpt4 key购买 nike

我一直在开发一个 Grails 应用程序,它使用位于此目录中的一些 FileResources:

MyGrailsApplication\web-app\images

我可以通过 GrailsResourceUtils.WEB_APP_DIR 自然地通过 grails 获取这个目录。但是,当我将 Grails 项目转换为 .war 文件并将其部署到 tomcat 服务器时,该代码不起作用 - 路径变得困惑。

通过一些调试语句,我能够找到解决此问题的方法(基本上,在我发动 war 之前进行代码修改):

// BELOW 2 LINES WORK IN THE WAR FILE, BUT NOT WITH THE RUN-APP CMD
new FileResource(new File("../webapps/InstanceChecker-0.1/images/ok.png"))
new FileResource(new File("../webapps/InstanceChecker-0.1/images/http404.png"))

// BELOW 2 LINES WORK WITH RUN-APP, BUT NOT IN THE WAR
new FileResource(new File(GrailsResourceUtils.WEB_APP_DIR + "/images/ok.png"))
new FileResource(new File(GrailsResourceUtils.WEB_APP_DIR + "/images/http404.png"))

有没有办法在运行应用程序以及部署为 .war 时干净地获取图像路径?我在这里错过了一些最佳实践吗?

编辑:也许我没有将图像放在理想的目录中?我也愿意就此提出建议。

最佳答案

要获取资源文件,您可以使用以下命令:

   def basePath = grailsApplication.mainContext.servletContext.getRealPath('images')

检查是否以“/”结尾:
basePath = basePath.endsWith("/") ? basePath : basePath + "/"

进而:
new FileResource(new File(basePath+"fileName"))

记得在你的 Controller /服务中注入(inject) grailsApplication

关于Grails - 从 war 中运行时位于不同路径的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25004208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com