# AI Video Brief — 다운로드 파일명이 제목으로 안 나오는 문제 수정 **소요 시간**: 10분 **Context 사용량**: input 1000k / output 78k tokens (추정값) ## 문제 저장은 되는데 파일명이 영상/음원 제목이 아니라 작업 id로 저장됨. ## 원인 (재현으로 확인) - Starlette `FileResponse(filename=...)`는 한글 등 비ASCII 파일명일 때 `Content-Disposition: attachment; filename*=utf-8''<인코딩>` **한 형식만** 출력하고 구형/모바일 브라우저·다운로드관리자·curl이 인식하는 기본 `filename="..."` 형식을 빠뜨림 - `filename*`만 있으면 이를 못 읽는 클라이언트는 **URL 마지막 경로(작업 id)로 저장** → 문제 발생 - `curl -OJ` 재현: 파일이 `099fe812f033` 로 저장됨 (제목 아님) ## 수정 (`ai_video_brief/app/main.py`) - `_content_disposition()` 헬퍼 추가 — RFC 6266 방식으로 **두 형식 모두** 출력: `attachment; filename=""; filename*=utf-8''` - `filename*` : 최신 브라우저가 사용 → 완전한 한글 제목 - `filename` : ASCII 대체(한글은 빠지고 스펙/확장자는 유지) → 구형/모바일/curl용, 최소한 작업 id는 아님 - `download_file()`이 `filename=` 대신 이 헤더를 직접 지정 ## 테스트 결과 ``` 헤더: content-disposition: attachment; filename="1 DJI 5 _144p24fps.mp4"; filename*=utf-8''1%EC%8B%9C...설명서_144p24fps.mp4 curl -OJ 저장: "1 DJI 5 _144p24fps.mp4" (예전엔 "099fe812f033") ``` - ✅ 최신 브라우저(Chrome/Edge/Firefox)는 filename* 우선 → "1시간으로 끝내는 DJI 미니 5 프로 사용 설명서_144p24fps.mp4" 전체 한글 제목으로 저장 - ✅ filename*를 못 읽는 클라이언트도 읽을 수 있는 ASCII 이름으로 저장 (작업 id 아님)