【发布时间】:2012-09-12 00:28:24
【问题描述】:
我在 Rails 中有一个 webapp,作为 AJAX 文件上传功能。文件上传到远程服务器 (AWS S3)。我目前的策略是在用户提交表单之前将文件上传到temp/ 目录(使用它们的原始名称),然后将它们重命名为其最终名称。
但问题是,如果多个用户尝试同时上传两个同名文件,那么其中一个会覆盖另一个。
我想解决这个问题的策略是在加载上传页面时生成随机 SHA1,将它们存储在本地表中以确保它们是唯一的,并在临时文件重命名时将它们删除。
您认为这种方法有问题吗?
解决这个问题的好策略是什么?
【问题讨论】:
-
为什么使用 SHA1 而不仅仅是 GUID 或
mktempfile生成器?在内容上使用 SHA1 的一个原因是,如果预期添加重复资源并且它被用作重复控制的方法并且资源在上传后被认为是不可变的。但是,如果不是这样的话..(然后想象一下两个人同时上传两个空文件)。
标签: ruby-on-rails web-applications concurrency amazon-s3