如何在Tomcat服务器中重新部署时配置Grails以避免删除上载的映像

时间:2013-07-31 16:51:40

标签: tomcat grails storage

我一直reading about the best place to save images uploaded by users。就我而言,我认为最好将这些图像存储在文件系统中。我想将它们存储在同一台服务器中,并让其他管理员轻松保持这种状态。

是否可以在应用程序上下文中设置上传文件夹并配置Grails以便在重新部署新战争时不删除该文件夹?

如果没有,我想知道下一个代码(由@yecid得到here)是否会起作用,因为我认为它会在应用程序上下文中上传图像:

//for development environment
def root = System.properties['base.dir']?.toString()
if(!root){
    //for production environment in war deplements
    def tmpRoot = ApplicationHolder.application.mainContext.getResource('WEB-INF').getFile().toString()
    root = tmpRoot.substring(0, tmpRoot.indexOf(File.separator + 'temp' + File.separator))
}
if(!root){
    throw new Exception('Not found a valid path')
}
return root + File.separator

1 个答案:

答案 0 :(得分:0)

在代码中,我看到您正在将上传的文件保存到WEB-INF文件夹中。虽然您可以这样做,但是当您重新启动服务器/重新部署应用程序时,您的web-app文件夹的内容将被替换,因此上传的文件也将被删除。 这就是Tomcat的工作原理。

我认为更好的方法是将上传的文件保存到不在您的Web容器(Tomcat)文件夹中的文件夹中。通过这种方式,当你:

时,它不会被删除

1)重新部署您的Web应用程序

2)无论出于何种原因重启Tomcat

我的团队过去的做法是在当前用户的主文件夹中创建自定义文件夹。通过这种方式,我们不必担心保存文件的权限。