0

我一直在阅读有关保存用户上传图像的最佳位置的信息。就我而言,我认为将这些图像存储在文件系统中会更好。我想将它们存储在同一台服务器中,并使其易于其他管理员维护。

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

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

//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
4

1 回答 1

0

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

我认为更好的方法是将上传的文件保存到不在 Web 容器(Tomcat) 文件夹内的文件夹中。这样,当您执行以下操作时,它不会被删除:

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

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

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

于 2013-08-01T03:30:47.710 回答