fix: encode non-ASCII filename in Content-Disposition header
Use RFC 5987 filename*=UTF-8'' percent-encoding to support Chinese and other Unicode characters in DOCX download filenames. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
"""Format conversion endpoints."""
|
||||
|
||||
from urllib.parse import quote
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from fastapi.responses import Response
|
||||
|
||||
@@ -34,10 +36,11 @@ async def convert_markdown_to_docx(
|
||||
request.filename,
|
||||
len(docx_bytes),
|
||||
)
|
||||
encoded_name = quote(f"{request.filename}.docx")
|
||||
return Response(
|
||||
content=docx_bytes,
|
||||
media_type="application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
||||
headers={"Content-Disposition": f'attachment; filename="{request.filename}.docx"'},
|
||||
headers={"Content-Disposition": f"attachment; filename*=UTF-8''{encoded_name}"},
|
||||
)
|
||||
except Exception as e:
|
||||
logger.exception("DOCX conversion failed, filename=%s: %s", request.filename, e)
|
||||
|
||||
Reference in New Issue
Block a user