From d6e782acefe9a163b1dbe4dc627dc7925c4b76c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= Date: Fri, 3 Apr 2026 16:23:44 +0200 Subject: [PATCH] download with presigned URLs --- app/controllers/media_controller.rb | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app/controllers/media_controller.rb b/app/controllers/media_controller.rb index b6671da6f..205a9b108 100644 --- a/app/controllers/media_controller.rb +++ b/app/controllers/media_controller.rb @@ -15,9 +15,19 @@ def show end def download - send_data URI.parse(@blob.url).read, - type: "#{@blob.content_type}", - disposition: "attachment; filename=#{@blob.filename.to_s}" + object = ActiveStorage::Blob.service.bucket.object(@blob.key) + content_disposition = ActionDispatch::Http::ContentDisposition.format( + disposition: "attachment", + filename: @blob.filename.sanitized + ) + presigned_url = object.presigned_url( + :get, + expires_in: ActiveStorage.service_urls_expire_in.to_i, + response_content_disposition: content_disposition + ) + + expires_in ActiveStorage.service_urls_expire_in + redirect_to presigned_url, allow_other_host: true end def static