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オブジェクトであることがわかります。#read#eof?

4

1 に答える 1

2

zipファイルのアップロード中に同じエラーが発生しましたがS3、最終的にこれでうまくいきました:

zip_data = File.read(zip_file_path)

つまり、zip_data は、tmp ディレクトリにある zip ファイル パスのオブジェクトになります。

うまくいけば、これもうまくいくでしょう。

于 2014-03-06T10:39:41.993 に答える