gpt4 book ai didi

configuration - grails base.dir 系统属性

转载 作者:行者123 更新时间:2023-12-04 16:57:11 24 4
gpt4 key购买 nike

我有一个简单的 grails 文件上传应用程序。

我正在使用 transferTo 将文件保存到文件系统。

要获取我正在使用的 Controller 中的基本路径

def basePath = System.properties['base.dir'] // HERE IS HOW I GET IT

println "Getting new file"
println "copying file to "+basePath+"/files"
def f = request.getFile('file')
def okcontents = ['application/zip','application/x-zip-compressed']
if (! okcontents.contains(f.getContentType())) {
flash.message = "File must be of a valid zip archive"
render(view:'create', model:[zone:create])
return;
}
if(!f.empty) {
f.transferTo( new File(basePath+"/files/"+zoneInstance.title+".zip") )
}
else
{
flash.message = 'file cannot be empty'
redirect(action:'upload')
}
println "Done getting new file"

出于某种原因,这在部署到我的 WAS 6.1 服务器时始终为空。

为什么它在 WAS 服务器上运行 dev 而不是 prod 时有效?我应该以不同的方式访问这些信息吗?

最佳答案

谢谢j,

我找到了最好的动态解决方案。通常,我从不喜欢将绝对路径编码到任何软件中。属性文件或没有。

所以这是如何完成的:

def basePath = grailsAttributes.getApplicationContext().getResource("/files/").getFile().toString() 

grailsAttributes 在任何 Controller 中都可用。

getResource(some relative dir) 将查找 web-app 文件夹中的任何内容。

因此,例如在我的开发系统中,它将字符串输出到“C:\WORKSPACEFOLDER\PROJECTFOLDER\web-app\”,并将相对目录连接到最后

就像在我上面的例子中一样
C:\WORKSPACEFOLDER\PROJECTFOLDER\web-app\files

我在 WAS 6.1 中尝试过,它在容器中运行没有问题。
你必须 toString 否则它会尝试返回对象。

穆加富加

关于configuration - grails base.dir 系统属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/570713/

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