如何从s3读取文件?

Kra*_*thi 4 ruby ruby-on-rails-3

我正在尝试直接从 s3 读取 CSV 文件。

我正在获取 s3 URL,但我无法打开它,因为它不在本地系统中。我不想下载文件并阅读它。

有没有其他方法可以实现这一目标?

Gry*_*ych 6

您可以直接从 URL 打开该文件:

require 'open-uri'
csv = open('http://server.com/path-to-your-file.csv').read
Run Code Online (Sandbox Code Playgroud)


Ale*_*eks 6

有几种方法,具体取决于您使用的宝石。例如,官方文档中的一种方法:

s3 = Aws::S3::Client.new
resp = s3.get_object(bucket:'bucket-name', key:'object-key')

resp.body
#=> #<StringIO ...> 

resp.body.read
#=> '...'
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是 CarrierWave/Fog:

obj = YourModel.first
content = obj.attachment.read
Run Code Online (Sandbox Code Playgroud)