在哪里存储用户文件上传?

时间:2015-08-23 04:04:27

标签: clojure upload compojure

在我的compojure应用程序中,我应该在哪里存储用户上传文件?我只是在我的项目根目录中创建一个user-upload目录并将所有内容粘贴在那里吗?我应该做些什么特别的事情(类路径,权限等)?

2 个答案:

答案 0 :(得分:2)

要正确回答您的问题,您需要考虑上传文件的生命周期。我会开始回答诸如以下的问题:

  • 文件有多大?
  • 哪些存储选项可以容纳足够的数据来存储所有上传内容?
  • SLA,冗余和灾难避免怎么样?
  • 如何以及监控存储空间和健康状况的人员?

一般情况下,文件系统位置与位于其后面的块设备相关性较低:只要您的数据安全存储到您的应用程序,user-upload可以在任何地方,并且可以是常规磁盘中的任何内容到S3 bucket例如通过s3fs-fuse

将这样的文件夹放在类路径中听起来很奇怪。它没有任何实质性的好处,因为您总是需要通过配置条目来说明存储和读取文件的位置。

权限明确,您的应用程序至少需要对上载存储的写访问权限(很可能也是读访问权限)。授予此类权限取决于您选择的物理设备:如果您按照问题中的建议选择本地文件系统,则需要确保Clojure应用程序由chmod +rw的用户运行,但如果是S3,您需要配置API密钥。

答案 1 :(得分:1)

除了练习题外,我建议使用Postgres或Datomic等数据库。这样,您就可以获得具有真实交易的数据库的可靠性,以及从任何位置通过网络访问文件的能力。