Rails:从URL保存文件并将其保存到Amazon S3

5

如何更简单地从给定的 URL 下载文件并立即上传到 Amazon S3(+保存一些关于文件的信息,如名称、大小等到数据库中)?

目前,我没有使用 Paperclip 或 Carrierwave。

谢谢。

1个回答

9

简单明了:

require 'open-uri'
require 's3'

amazon = S3::Service.new(access_key_id: 'KEY', secret_access_key: 'KEY')
bucket = amazon.buckets.find('image_storage')
url = 'http://www.example.com/url'
download = open(url)

file = bucket.objects.build('image.png')
file.content = (File.read download)

if file.save
  # Make a new ActiveRecord::Base class for this
  LogFile.create(size: download.size, type: download.type, name: url)
end

https://github.com/qoobaa/s3


你在哪里写这个? - 2ueenO
在一个纯文本文件中编写代码,然后使用 $ ruby file.rb 命令运行它。 - ichigolas
是的,但我对你的解决方案非常感兴趣,并且我想将其插入到我的网站中以存储来自Aviary的图片。我已经创建了另一个问题:从临时URL在S3中保存图片 - 2ueenO
您可以将这段代码放置在任何控制器操作中,或者任何您认为合适的位置。例如,您可以创建一个表单来提交一个URL给一个操作,并将其作为参数传递以替换 url 变量。 - ichigolas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接