Ruby 如何从s3读取文件?

Ruby 如何从s3读取文件?,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我正在尝试直接从s3读取CSV文件 我得到了S3URL,但我无法打开它,因为它不在本地系统中。我不想下载文件并阅读它 有没有其他方法可以实现这一点?我认为s3没有提供任何不下载文件就读取文件的方法。 您可以将其保存在临时文件中: @temp_file = Tempfile.open("your_csv.csv") @temp_file.close `s3cmd get s3://#{@your_path} #{@temp_file.path}` 有关详细信息:您可以直接从URL打开文件: re

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

我得到了S3URL,但我无法打开它,因为它不在本地系统中。我不想下载文件并阅读它


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

我认为s3没有提供任何不下载文件就读取文件的方法。 您可以将其保存在临时文件中:

@temp_file = Tempfile.open("your_csv.csv")
@temp_file.close
`s3cmd get s3://#{@your_path} #{@temp_file.path}`

有关详细信息:

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

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

有几种方法,这取决于您使用的宝石。例如,来自官方的方法之一:


你打算如何在不下载的情况下打开文件?这当然是一种方法!)我可以使用csv变量来处理和读取每一行吗?例如:CSV.foreach(CSV)No.
read
将一次读取所有文件,CSV将成为字符串。如果要访问行,
open().readlines
会将其转换为数组。或者您可以在每一行上迭代:
open()。每一行{行}
。了解有关文件阅读的更多信息抱歉问您这个问题。我得到的url是一个csv文件。如果使用open(),则无法对其使用任何csv操作。每个权限?。我的意思是访问标题和所有内容。您可以使用
CSV::parse
方法。阅读示例:
CSV.parse(打开http://server.com/path-to-your-file.csv“))。每个{…}
's3cmd get s3://{@your#path}{@temp#u file.path}`这个命令说什么?“@your#path”必须是s3目录的url“@temp_file.path”是我们刚刚创建的临时文件的路径。它基本上说“从我的s3的url获取文件并将其存储在这个临时文件中”
s3 = Aws::S3::Client.new
resp = s3.get_object(bucket:'bucket-name', key:'object-key')

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

resp.body.read
#=> '...'
obj = YourModel.first
content = obj.attachment.read