我的目标是从用户上传到Amazon S3的Excel文件中提取数据,并生成图表。
我已经用Carrierwave实现了用户上传Excel文件的功能,现在需要能够访问数据,并使用图表库(Highcharts)将其呈现出来。
我卡住的任务是如何直接通过Rails访问S3中的数据。一旦获取数据,使用Highcharts进行操作就应该相对简单。
任何建议将不胜感激!
我的目标是从用户上传到Amazon S3的Excel文件中提取数据,并生成图表。
我已经用Carrierwave实现了用户上传Excel文件的功能,现在需要能够访问数据,并使用图表库(Highcharts)将其呈现出来。
我卡住的任务是如何直接通过Rails访问S3中的数据。一旦获取数据,使用Highcharts进行操作就应该相对简单。
任何建议将不胜感激!
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
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
关于环境变量配置,你可以使用 figaro 或者 dotenv(开发环境用) 或者在 ~/.bashrc 文件中设置。
注意: