我想创建一个相册。 但我想在服务器上整理相册,所以我想创建新的文件夹:
/ MyApp的 / MyApp的/相册 / MyApp的/专辑/ 1 / MyApp的/专辑/ 2 ...
如何使用Grails在tomcat上执行此操作?它在tomcat / bin中创建所有新文件夹,而不是在tomcat / webapps / myapp /
中答案 0 :(得分:6)
当我必须做类似的事情时,我在Config.groovy中定义了一个根路径,如
environments {
production {
rootPath="/home/user/reports"
}
development {
rootPath="c:\\reports"
}
test {
rootPath="c:\\reports"
}
然后创建如下目录。
import org.codehaus.groovy.grails.commons.ConfigurationHolder as Conf
tempFile=new File(Conf.config.rootPath+"dirName")
tempFile.mkdir()
答案 1 :(得分:2)
我不做Grails,但由于它运行在Servlet API之上,你可能会发现这个答案(正确方向的转向)也很有用。
首先,获取ServletContext
的句柄。通常,您会使用GenericServlet
- 继承的getServletContext()
方法。然后使用ServletContext#getRealPath()
方法将相对Web路径转换为绝对本地磁盘文件系统路径(因为这是唯一java.io.File
可靠地了解)。
String absolutePath = getServletContext().getRealPath("albums/1");
File file = new File (absolutePath);
// ...
如果您在java.io.File
内容中使用相对路径,那么它将变为相对于当前工作目录,这取决于您启动服务器的方式以及您经历过的Tomcat/bin
确实可能是{{1}}
也就是说,这种方法存在另一个主要问题:如果您在爆炸式网络应用程序中创建文件夹,那么每当您重新部署Web应用程序甚至重新启动服务器时,它们都会迷路!而是在webapp的上下文之外,在磁盘文件系统的其他位置的固定路径中创建文件夹。或者,如果您想要更好的可移植性(但是元数据信息较差),那么请考虑将其存储在数据库中。