Grails和Tomcat:在文件系统中存储上传文件的位置?

时间:2011-02-09 13:53:47

标签: tomcat grails file upload storage

我使用Grails编写了一个小型Web应用程序。生成的war文件部署在Tomcat应用程序服务器上。

该应用具有附件的上传功能。我选择将上传的文件保存到磁盘(而不是在数据库中存储blob)。

起初我在webapp-dir中选择了一个文件路径来存储文件,但后来我发现每个部署一个新的war文件都会覆盖这个目录。

是否有最佳做法 “在本地文件系统中存储上传文件的位置”

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

AlphaOne,我们做了类似于你要求的事情,但我们在Tomcat面前使用了一个Apache网络服务器。我们从配置文件中获取完整路径并写入它。说“/ tmp / branding”。然后我们还从配置文件(例如“myapp / branding”)中获取此位置的url路径,并在我们的GSP中使用它。然后,在Apache中,我们映射该URL的应用程序请求(“myapp / branding”)直接转到文件位置,绕过Tomcat。

答案 1 :(得分:2)

创建单独的上传项目并传递用户名以创建用户特定文件夹。当用户想要上传文件时,从主项目提供该项目的链接。

答案 2 :(得分:1)

我建议使用环境变量来存储位置,或者更好地使用环境变量来设置配置属性文件的位置并在那里设置属性。这样,位置就可以由运营团队配置,运营团队应该管理文件系统/配置问题。

答案 3 :(得分:0)

我猜您正在寻找最佳实践解决方案。好吧,实际上没有一个,但有些地方你应该避免让它们进入。我将假设一个UNIX环境。

例如:

  • $ CATALINA_HOME。只需保留应用程序文件夹即可,不要使用上传的文件污染它。
  • / tmp。你永远不知道谁会清理它。

虽然我不确定它是否为锁定规范,但您可以查看:linux directory structure

我读它的方式有3种选择:

  1. 如果Tomcat使用专用用户运行 - >用户主目录。例如〜/ Fileuploads / appname
  2. 由于var可以被视为应用程序数据的增长目录。例如:/ var / Fileuploads / appname
  3. 将其留给sys admin。看看这个:Externalizing Grails Configuration
  4. 祝你好运!