콘텐츠 처리는 MIME 프로토콜의 확장으로, MIME 사용자 에이전트에게 첨부된 파일을 표시하도록 지시합니다. Internet Explorer가 헤더를 받으면 파일 다운로드 대화상자가 활성화되고, 파일 이름 상자에 헤더에 지정된 파일 이름이 자동으로 채워집니다. (이는 설계에 의해 발생한 것임을 유념하세요; 이 기능을 사용해 문서를 사용자의 컴퓨터에 저장할 때는 사용자가 어디에 저장할지 묻지 않고는 사용할 수 없습니다. )
서버가 클라이언트 브라우저에 파일을 보낼 때, 브라우저에서 지원하는 파일 형식이라면 기본적으로 브라우저를 통해 열리며, 텍스트, jpg 등이 브라우저에서 직접 표시됩니다. 사용자가 저장 요청을 받아야 할 경우, Content-Disposition을 사용해 처리해야 하며, 핵심은 첨부파일을 추가하는 것입니다:
Response.AppendHeader("Content-Disposition","attachment; filename=FileName.txt");
참고: 이 모드는 저장 또는 열라는 안내를 받으며, 열어도 IE가 직접 열지 않고 메모장 같은 관련 프로그램으로 열립니다.
Content-Disposition은 사용자가 요청한 콘텐츠를 파일로 저장하고자 할 때 기본 파일 이름을 제공하는 것입니다. 구체적인 정의는 다음과 같습니다:
content-disposition = "Content-Disposition" ":"
성향 유형 *( ";" disposition-parm )
성향 유형 = "애착" | disp-extension-token(디스프-확장-토큰)
disposition-parm = filename-parm | disp-extension-parm
filename-parm = "filename" "=" 인용 문자열
disp-extension-token = 토큰
disp-extension-parm = 토큰 "=" ( 토큰 | 인용 문자열 )
위 구체적인 예시들을 볼 수 있습니다:
Cache-Control:private
Content-Disposition:attachment; filename=Index1.png
Content-Length:328462
Content-Type:image/png
Date:Fri, 14 Oct 2016 01:08:04 GMT
Server:Microsoft-IIS/8.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:5.2
X-Powered-By:ASP.NET
Content-Disposition: attachment; filename=“filename.xls”
물론 파일명 매개변수에 경로 정보를 포함할 수 있지만, User-Agnet은 이 정보를 무시하고 경로 정보의 마지막 부분만 파일 이름으로 사용합니다. 응답 유형인 application/octet-stream에서 이 헤더를 사용하면, 콘텐츠를 직접 표시하고 싶지 않다는 뜻이지만, "파일 다운로드" 대화상자가 뜨고, 그 다음에 "열기" 또는 "저장" 여부를 결정해야 합니다.
노트:
1. 브라우저가 다운로드 대화상자를 띄우도록 코드 내 Content-Disposition을 사용할 때. response.addHeader("Content-Disposition","attachment"); 브라우저 캐싱을 비활성화한 적이 없는지 확인하세요. 다음과 같습니다:
response.setHeader("Pragma", "노캐시"); response.setHeader("캐시 제어", "캐시 없음"); response.setDateHeader("만료", 0);
|