簡體   English   中英

Rails:無法從URL保存文件並將其保存到Amazon S3(S3 :: Error :: ResponseError)

[英]Rails: Can't save file from URL and save it to Amazon S3 (S3::Error::ResponseError)

我試圖從URL保存文件,然后將其保存到S3。 這是我寫的rake任務代碼:

require 's3'
require 'open-uri'

task :testing => [:environment] do
  aws_object = S3::Service.new(access_key_id: Rails.application.secrets.aws_access_key_id, secret_access_key: Rails.application.secrets.aws_secret_access_key)
  bucket = aws_object.buckets.find(Rails.application.secrets.aws_bucket)
  url = 'https://pbs.twimg.com/profile_images/1111729635610382336/_65QFl7B_400x400.png'
  downloded_file = open(url)

  new_file = bucket.objects.build('twitter.jpg')
  new_file.content = (File.read downloded_file)

  if new_file.save
    puts "Success!"
  end
end

但是當我在上面運行這個rake任務代碼時,這就是我在終端上得到的:

rake aborted!
S3::Error::ResponseError: S3::Error::ResponseError
/Users/ryzal/Sites/test/lib/tasks/testing.rake:17:in `block in <top (required)>'
/Users/ryzal/.rbenv/versions/2.3.1/bin/bundle:23:in `load'
/Users/ryzal/.rbenv/versions/2.3.1/bin/bundle:23:in `<main>'
Tasks: TOP => testing
(See full trace by running task with --trace)

我檢查了所有S3細節,一切都正確。 有人可以幫忙嗎? 謝謝!

我終於解決了這個問題,這就是我做到的:

1)我使用aws-sdk-ruby gem而不是s3 gem

2)我在這里引用S3文檔並將我的代碼更新為:

require 'aws-sdk-s3'
require 'open-uri'

task :testing => [:environment] do
  s3 = Aws::S3::Resource.new(region: Rails.application.secrets.aws_region)
  obj = s3.bucket(Rails.application.secrets.aws_bucket).object("any_unique_key_you_want_such_as_email_or_username")

  url = 'https://pbs.twimg.com/profile_images/1111729635610382336/_65QFl7B_400x400.png'
  file = open(url)

  obj.put(body: file, acl: "public-read")

  puts "URL is: #{obj.public_url}"
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM