From 14827e82813c4d308ae89f892141f69eb183855f Mon Sep 17 00:00:00 2001 From: Manny Dinssa <44172848+Dinssa@users.noreply.github.com> Date: Fri, 27 Sep 2024 14:37:56 +0100 Subject: [PATCH] Add response content disposition to download with the correct filenames and extension --- app/services/bulk_upload/downloader.rb | 6 +++++- app/services/storage/s3_service.rb | 9 +++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/services/bulk_upload/downloader.rb b/app/services/bulk_upload/downloader.rb index 5a2c92193..5a4072030 100644 --- a/app/services/bulk_upload/downloader.rb +++ b/app/services/bulk_upload/downloader.rb @@ -16,7 +16,11 @@ class BulkUpload::Downloader end def presigned_url - s3_storage_service.get_presigned_url(bulk_upload.identifier, 60) + s3_storage_service.get_presigned_url( + bulk_upload.identifier, + 60, + response_content_disposition: "attachment; filename=#{bulk_upload.filename}.csv" + ) end private diff --git a/app/services/storage/s3_service.rb b/app/services/storage/s3_service.rb index 3592eaa67..41c670949 100644 --- a/app/services/storage/s3_service.rb +++ b/app/services/storage/s3_service.rb @@ -20,10 +20,15 @@ module Storage response.key_count == 1 end - def get_presigned_url(file_name, duration) + def get_presigned_url(file_name, duration, response_content_disposition: nil) Aws::S3::Presigner .new({ client: @client }) - .presigned_url(:get_object, bucket: @configuration.bucket_name, key: file_name, expires_in: duration) + .presigned_url( + :get_object, + bucket: @configuration.bucket_name, + key: file_name, + expires_in: duration, + response_content_disposition: response_content_disposition,) end def get_file_io(file_name)