2017-01-29 7 views
0

Я пытаюсь разобрать файл PDF, хранящийся удаленно на s3. Это код, у меня есть, когда я разобрать файл на моем локальном дискеRails open_uri и amazon s3 `open_http ': 403 Forbidden (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) 

У меня нет вопроса, чтобы получить URL файла на s3, используя этот код

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 

Однако, когда я пытаюсь чтобы открыть этот адрес следующим образом

io = open(object.public_url) 

Я также попытался с интерполяцией строк

io = open("#{object.public_url}") 

Я получаю сообщение об ошибке `open_http ': 403 Запрещено (OpenURI :: HTTPError)

Как я могу обойти это? Каков правильный способ открыть URL-адрес файла, хранящегося на s3? Благодарю.

ответ

1

попробовать

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

Спасибо. Это не вызывает ошибки, но не выполняет работу для следующего шага с камнем pdf-ридера (reader = PDF :: Reader.new (io)), который дает мне ошибку 'extract_io_from ': вход должен быть IO-подобным object или filename (ArgumentError) – Bastien

+0

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