[WIKI-520] fix: update content disposition handling in asset download endpoints (#7380)

This commit is contained in:
Nikhil 2025-07-15 13:24:17 +05:30 committed by GitHub
parent 62065a6ebb
commit ac928f263a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 8 additions and 2 deletions

View file

@ -740,7 +740,8 @@ class WorkspaceAssetDownloadEndpoint(BaseAPIView):
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 @@ class ProjectAssetDownloadEndpoint(BaseAPIView):
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)

View file

@ -1,5 +1,6 @@
# Python imports
import os
import uuid
# Third party imports
import boto3
@ -101,6 +102,9 @@ class S3Storage(S3Boto3Storage):
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)