From 967b848972fd0184832d7ce2ea19aa9fcd448059 Mon Sep 17 00:00:00 2001 From: pablohashescobar Date: Thu, 10 Jul 2025 14:27:17 +0530 Subject: [PATCH 1/2] fix: update content disposition handling in asset download endpoints --- apps/api/plane/app/views/asset/v2.py | 6 ++++-- apps/api/plane/settings/storage.py | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/api/plane/app/views/asset/v2.py b/apps/api/plane/app/views/asset/v2.py index 5994ffd8c16..7e0c14fdd8a 100644 --- a/apps/api/plane/app/views/asset/v2.py +++ b/apps/api/plane/app/views/asset/v2.py @@ -740,7 +740,8 @@ def get(self, request, slug, asset_id): storage = S3Storage(request=request) signed_url = storage.generate_presigned_url( object_name=asset.asset.name, - disposition=f"attachment; filename={asset.asset.name}", + disposition="attachment", + filename=asset.attributes.get("name", uuid.uuid4().hex), ) return HttpResponseRedirect(signed_url) @@ -767,7 +768,8 @@ def get(self, request, slug, project_id, asset_id): storage = S3Storage(request=request) signed_url = storage.generate_presigned_url( object_name=asset.asset.name, - disposition=f"attachment; filename={asset.asset.name}", + disposition="attachment", + filename=asset.attributes.get("name", uuid.uuid4().hex), ) return HttpResponseRedirect(signed_url) diff --git a/apps/api/plane/settings/storage.py b/apps/api/plane/settings/storage.py index f2be261ad3f..419879a780e 100644 --- a/apps/api/plane/settings/storage.py +++ b/apps/api/plane/settings/storage.py @@ -1,5 +1,6 @@ # Python imports import os +import uuid # Third party imports import boto3 @@ -99,7 +100,7 @@ def generate_presigned_post( return response - def _get_content_disposition(self, disposition, filename=None): + def _get_content_disposition(self, disposition, filename=uuid.uuid4().hex): """Helper method to generate Content-Disposition header value""" if filename: # Encode the filename to handle special characters From 7c4d77b25191fc5f8b45e7d357ca638942d1db30 Mon Sep 17 00:00:00 2001 From: pablohashescobar Date: Tue, 15 Jul 2025 13:19:25 +0530 Subject: [PATCH 2/2] fix: improve content disposition handling in S3Storage class --- apps/api/plane/settings/storage.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/api/plane/settings/storage.py b/apps/api/plane/settings/storage.py index 419879a780e..71709ebe03e 100644 --- a/apps/api/plane/settings/storage.py +++ b/apps/api/plane/settings/storage.py @@ -100,8 +100,11 @@ def generate_presigned_post( return response - def _get_content_disposition(self, disposition, filename=uuid.uuid4().hex): + def _get_content_disposition(self, disposition, filename=None): """Helper method to generate Content-Disposition header value""" + if filename is None: + filename = uuid.uuid4().hex + if filename: # Encode the filename to handle special characters encoded_filename = quote(filename)