0

我正在使用 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对象,它确实具有#readand #eof?

4

1 回答 1

2

我在 zip 文件上传期间遇到了同样的错误S3,最后这对我有用:

zip_data = File.read(zip_file_path)

意味着, zip_data 将是位于 tmp 目录中的 zip 文件路径中的对象。

希望,这也对你有用。

于 2014-03-06T10:39:41.993 回答