- 발표자료(좌표투영·측점기반재생) 갱신 + 그림/PDF - 특허 출원 초안 및 도면 - AI 영상요약 서비스 작업기록(docs/history) - 관련 scripts 추가 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.8 KiB
1.8 KiB
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="<ASCII대체>"; filename*=utf-8''<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 아님)