2016-07-30 11 views
2

Ich versuche, eine PDF in dem Browser in einer Flask-Anwendung zu senden. Ich verwende AWS S3 zum Speichern der Dateien und boto3 als SDK zur Interaktion mit S3. Mein Code so weit ist:Zurückgeben einer PDF aus S3 in Flask

s3 = boto3.resource('s3', aws_access_key_id=settings.AWS_ACCESS_KEY, 
       aws_secret_access_key=settings.AWS_SECRET_KEY) 
file = s3.Object(settings.S3_BUCKET_NAME, 'test.pdf')).get() 
response = make_response(file) 
response.headers['Content-Type'] = 'application/pdf' 
return response 

ich in der Lage bin erfolgreich das Objekt von S3 abzurufen in file boto3 verwenden, aber das ist ein Wörterbuch, von denen mir nicht sicher bin, wie die PDF-Datei zurück von diesen

+1

Nun, was im Wörterbuch ist? Haben Sie versucht, die Daten zu untersuchen, mit denen Sie arbeiten? – davidism

+0

Haben Sie von dieser Implementierung? Es müsste die Datei von s3 jedes Mal auf Ihren Server herunterladen, wenn jemand die Datei anfordert? – patito

Antwort

2

es stellt sich heraus, dass boto3 keine readLines() Methode hat aber sie haben eine read() Methode haben, so funktionierte es, indem sie:

response = make_response(file['Body'].read()) 
response.headers['Content-Type'] = 'application/pdf' 
return response 
Verwandte Themen