2017-01-29 6 views
0

J'essaye d'analyser un fichier pdf stocké à distance sur s3. Voici le code que j'ai quand je parse le fichier sur mon disque localRails open_uri et amazon s3 `open_http ': 403 Interdit (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) 

Je ne question pour obtenir l'URL du fichier sur s3 en utilisant ce code

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 

Cependant, lorsque je tente pour ouvrir cette URL comme suit

io = open(object.public_url) 

J'ai aussi essayé avec interpolation de chaîne

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

je reçois l'erreur `open_http ': 403 Interdit (openURI :: HTTPError)

Comment puis-je contourner cela? Quelle est la bonne façon d'ouvrir une URL d'un fichier stocké sur s3? Merci.

Répondre

1

essayer

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

Merci. Cela ne déclenche pas d'erreur mais ne fait pas le travail pour la prochaine étape avec la gemme pdf-reader (lecteur = PDF :: Reader.new (io)) qui me donne l'erreur "extract_io_from": l'entrée doit être un IO-like object ou un nom de fichier (ArgumentError) – Bastien

+0

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