From 6b3570ce2fb779c25c39df945b528a6be2a9d09a Mon Sep 17 00:00:00 2001 From: Natalia Juszka Date: Mon, 26 Mar 2018 15:37:31 +0200 Subject: [PATCH] Storage/S3: generate url to download file --- storage_s3/indico_storage_s3/plugin.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/storage_s3/indico_storage_s3/plugin.py b/storage_s3/indico_storage_s3/plugin.py index f35b4ee..7ed5b39 100644 --- a/storage_s3/indico_storage_s3/plugin.py +++ b/storage_s3/indico_storage_s3/plugin.py @@ -21,12 +21,12 @@ from contextlib import contextmanager from tempfile import NamedTemporaryFile import boto3 +from werkzeug.utils import redirect from indico.core import signals from indico.core.config import config from indico.core.plugins import IndicoPlugin from indico.core.storage import Storage, StorageError -from indico.web.flask.util import send_file class S3StoragePlugin(IndicoPlugin): @@ -96,7 +96,9 @@ class S3Storage(Storage): def send_file(self, file_id, content_type, filename, inline=True): try: - fileobj = self.client.get_object(Bucket=self.bucket, Key=file_id)['Body'] - return send_file(filename, fileobj, content_type, inline=inline) + url = self.client.generate_presigned_url('get_object', + Params={'Bucket': self.bucket, 'Key': file_id}, + ExpiresIn=100) + return redirect(url) except Exception as e: raise StorageError('Could not send file "{}": {}'.format(file_id, e)), None, sys.exc_info()[2]