我正在使用 Ruby on Elastic Beanstalk 编写一个应用程序,在该应用程序中,我从远程服务器下载文件并将其写入存储桶中的对象。
require 'open-uri'
...
s3 = AWS::S3.new
bucket = s3.buckets['mybucket']
f = open(params[:url]) #using open-uri
obj = bucket.objects[params[:key]]
obj.write[f] #<< fails here
但是,最后一行失败,日志中出现以下异常:
:data must be provided as a String, Pathname, File, or an object that responds to #read and #eof?
#open
但是,我知道,通过在我的机器上执行相同的操作,这f
是一个StringIO
对象,它确实具有#read
and #eof?
。