我正在尝试使用来自GitHub的源代码来设置Weceem。它需要上载目录的物理路径定义,以及用于写入可搜索索引的目录。上载的默认设置为:
weceem.upload.dir = 'file:/var/www/weceem.org/uploads/'我想使用相对路径来定义它们,比如WEB-INF/resources/uploads。我尝试了一种我以前使用的方法,用于访问具有以下相对路径的目录:
File uploadDirectory = ApplicationHolder.application.parentContext.getResource("WEB-INF/resources/uploads").file
def absoluteUploadDirectory = uploadDirectory.absolutePath
weceem.upload.dir = 'file:'+absoluteUploadDirectory但是,ApplicationHolder.application下的'parentContext‘为NULL。有没有人能提供一个解决方案,让我可以使用相对路径?
发布于 2012-05-17 12:20:08
看看你应该拥有的Config.groovy (可能有评论)
// locations to search for config files that get merged into the main config
// config files can either be Java properties files or ConfigSlurper scripts
// "classpath:${appName}-config.properties", "classpath:${appName}-config.groovy",
grails.config.locations = [
"file:${userHome}/.grails/${appName}-config.properties",
"file:${userHome}/.grails/${appName}-config.groovy"
]在部署服务器中创建Conig文件
"${userHome}/.grails/${appName}-config.properties"并在该配置文件中定义您的属性(甚至不是相对路径)。
发布于 2012-05-17 12:43:13
为了补充阿拉姆·阿拉比安的回应,这是正确的,但缺乏解释:
Grails应用程序没有像PHP应用程序那样的“本地”目录。它们应该(用于生产)部署在servlet容器中。该内容的位置不应该被认为是可写的,因为它可能会在下一次部署时被清除。
简而言之:将您部署的应用程序视为已编译的二进制文件。
取而代之的是,在你的服务器上选择一个特定的位置来存放上传,最好是在web服务器的路径之外,这样它们就不能被直接访问。这就是为什么Weceem默认使用/var/www/weceem.org/下的自定义文件夹。
如果使用externalized configuration技术配置路径,则可以拥有特定于服务器的路径,并在开发计算机上包含不同的路径。
然而,在这两种情况下,您都应该使用绝对路径,或者至少是相对于已知目录的相对路径。
发布于 2012-05-17 22:46:23
即
String base = System.properties['base.dir']
println "config: ${base}/web-app/config/HookConfig.grooy"
String str = new File("${base}/web-app/config/HookConfig.groovy").text
return new ConfigSlurper().parse(str)或
def grailsApplication
private getConfig() {
String str = grailsApplication.parentContext.getResource("config/HookConfig.groovy").file.text
return new ConfigSlurper().parse(str)
}https://stackoverflow.com/questions/10629151
复制相似问题