在我的compojure应用程序中,我应该在哪里存储用户上传文件?我只是在我的项目根目录中创建一个user-upload
目录并将所有内容粘贴在那里吗?我应该做些什么特别的事情(类路径,权限等)?
答案 0 :(得分:2)
要正确回答您的问题,您需要考虑上传文件的生命周期。我会开始回答诸如以下的问题:
一般情况下,文件系统位置与位于其后面的块设备相关性较低:只要您的数据安全存储到您的应用程序,user-upload
可以在任何地方,并且可以是常规磁盘中的任何内容到S3 bucket例如通过s3fs-fuse
。
将这样的文件夹放在类路径中听起来很奇怪。它没有任何实质性的好处,因为您总是需要通过配置条目来说明存储和读取文件的位置。
权限明确,您的应用程序至少需要对上载存储的写访问权限(很可能也是读访问权限)。授予此类权限取决于您选择的物理设备:如果您按照问题中的建议选择本地文件系统,则需要确保Clojure应用程序由chmod +rw
的用户运行,但如果是S3,您需要配置API密钥。
答案 1 :(得分:1)
除了练习题外,我建议使用Postgres或Datomic等数据库。这样,您就可以获得具有真实交易的数据库的可靠性,以及从任何位置通过网络访问文件的能力。