4

我的目标是根据用户上传到 Amazon S3 的 excel 文件中的数据制作图表。

我已经实现了用户使用 Carrierwave 上传 excel 文件的功能,现在我需要能够访问数据并使其可与图表库 (Highcharts) 一起使用。

我坚持的任务是通过 Rails 直接访问 S3 中的数据。提取数据后,使用 Highcharts 对其进行操作应该相当简单。

我们欢迎所有的建议!

4

2 回答 2

5

You can use the AWS SDK:

require 'aws-sdk'

# retrieve the access key and secret key
access_key_id = ENV["ACCESS_KEY_ID"]
secret_access_key = ENV["SECRET_ACCESS_KEY"]

# create an instance of the s3 client
s3 = AWS::S3.new(access_key_id: access_key_id, secret_access_key: secret_access_key)

# get the bucket
bucket = s3.buckets['your-bucket-name']

# retrieve the objects
bucket.objects.each do |object|
  puts object.key
  puts object.read
end
于 2013-04-14T20:24:50.370 回答
0
s3 = Aws::S3::Client.new
bucket = Aws::S3::Bucket.new('AWS_BUCKET NAME HERE')
bucket.objects.each do |obj|
  File.open("#{Rails.root}/#{obj.key}", 'wb') do |file|
    s3.get_object( bucket:ENV[:AWS_BUCKET], key: obj.key , response_target: file)
  end
end

或者

s3 = Aws::S3::Client.new
s3.list_objects(bucket: 'AWS_BUCKET NAME HERE').each do |response|
  response.contents.each do |obj|
    File.open("#{Rails.root}/#{obj.key}", 'wb') do |file|
      s3.get_object( bucket: 'AWS_BUCKET NAME HERE', key: obj.key , response_target: file)
    end
  end
end

有官方的 AWS-SDK RUBY gem

版本 2 的 AWS SDK ruby​​ 官方文档

对于环境变量配置,您可以使用 figarodotenv(用于开发环境)或在~/.bashrc文件中进行设置。

笔记:

  1. 您需要创建 S3 存储桶并获取AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
  2. 在开发之前,您可以使用google chrome s3 浏览器扩展测试和访问您的 s3 存储桶数据
  3. 运行命令source ~/.bashrc. ~/.bashrc文件以反映更改,如果您将 ENV 变量存储在那里。

代码参考

于 2015-10-30T11:33:13.680 回答