我一直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
答案 0 :(得分:0)
在代码中,我看到您正在将上传的文件保存到WEB-INF文件夹中。虽然您可以这样做,但是当您重新启动服务器/重新部署应用程序时,您的web-app文件夹的内容将被替换,因此上传的文件也将被删除。 这就是Tomcat的工作原理。
我认为更好的方法是将上传的文件保存到不在您的Web容器(Tomcat)文件夹中的文件夹中。通过这种方式,当你:
时,它不会被删除1)重新部署您的Web应用程序
2)无论出于何种原因重启Tomcat
我的团队过去的做法是在当前用户的主文件夹中创建自定义文件夹。通过这种方式,我们不必担心保存文件的权限。