2017-01-29 4 views
0

私はs3でリモートに保存されたpdfファイルを解析しようとしています。私は私のローカルドライブ上のファイルを解析するときこれは私が持っているコードですRails open_uriとamazon s3 `open_http ':403禁止(OpenURI :: HTTPError)

@doc = current_user.docs.order("created_at").last #last file uploaded by user 
io = open("#{Rails.root}/public" + @doc.doc.url) 
reader = PDF::Reader.new(io) 

私がしようとしたとき、私は、このコード

s3 = Aws::S3::Resource.new(
access_key_id: 'XXX', 
secret_access_key: 'XXX', 
region: 'eu-west-1') 
bucket = s3.bucket('my_bucket') 
object = bucket.object('mydoc.pdf') 
puts object.public_url 
しかし

を使用してS3上のファイルのURLを取得するために何の問題がありません

io = open(object.public_url) 

を次のようにこのURLを開くために私はまた、文字列の補間を

io = open("#{object.public_url}") 
を試してみました

「open_http」というエラーが表示されます:403禁止(OpenURI :: HTTPError)

どうすれば回避できますか? s3に格納されているファイルのURLを開く正しい方法は何ですか?ありがとう。

答えて

1

io = Net::HTTP.get(URI.parse(object.public_url)) 
+0

感謝をしてみてください。これはエラーを引き起こすわけではありませんが、pdf-reader gem(reader = PDF :: Reader.new(io))を使って次のステップの仕事をしません。これは 'extract_io_from 'というエラーを出します:inputはIOのようなものでなければなりませんオブジェクトまたはファイル名(ArgumentError) – Bastien

+0

'open(Net :: HTTP.get(URI.parse(object.public_url)))' ' –

関連する問題