将文件直接上传到S3,无需在Rails中使用表单

时间:2015-06-26 17:40:02

标签: ruby-on-rails amazon-web-services file-upload amazon-s3

对于我的Rails应用程序,我将一堆文件从远程URL下载到我的应用程序。我想直接将它们上传到Amazon S3,而不需要表单进行上传,因为我会暂时缓存我在EC2实例上下载的文件。 我还想保留我上传的文件的链接,以便稍后下载。

我基本上是重新发布我下载的文件。

我环顾四周,但大多数解决方案似乎都涉及与用户上传到S3的表单。

是否有直接上传解决方案?

2 个答案:

答案 0 :(得分:1)

您可以使用AWS SDK for Ruby直接上传到S3。最简单的方法是:

require 'aws-sdk'

s3 = Aws::S3::Resource.new(region:'us-west-2')
obj = s3.bucket('bucket-name').object('key')
obj.upload_file('/path/to/source/file')

或者你可以找到其他几个选项here

答案 1 :(得分:0)

您只需使用EvaporateJS即可实现此目的。您还可以在每次上载文件后利用发送ajax请求将文件名更新到数据库。虽然javascript暴露了一些细节,但是你的存储桶不容易受到攻击,因为S3服务提供了一个存储桶策略。

只需在生产模式下将<AllowedOrigin>*</AllowedOrigin>设置为<AllowedOrigin>specificwebsite.com</AllowedOrigin>即可。