콘텐츠 유형을 익히려면 그것이 무엇인지, 어떤 용도로 사용되는지 미리 알아야 합니다.
HTTP 프로토콜(RFC2616)은 요청/응답 모델을 채택합니다. 클라이언트는 서버에 요청을 보냅니다. 요청 헤더에는 요청 메서드, URI, 프로토콜 버전 및 요청 수정자, 클라이언트 정보 및 콘텐츠가 포함된 MIME 유사 메시지 구조가 포함됩니다. 서버는 메시지 프로토콜 버전, 성공 또는 오류 코드, 서버 정보, 엔터티 메타 정보 및 엔터티 콘텐츠를 포함하는 상태 줄로 응답합니다.
일반적으로 HTTP 메시지는 시작 줄, 하나 이상의 헤더 필드, 헤더 필드만 끝내는 빈 줄, 선택적 메시지 본문으로 구성됩니다. HTTP 헤더 필드는 일반 헤더, 요청 헤더, 응답 헤더, 엔터티 헤더의 네 부분으로 구성됩니다. 각 헤더 필드는 도메인 이름, 콜론(:) 및 도메인 값으로 구성됩니다. 도메인 이름은 대소문자를 구분하지 않습니다. 필드 값 앞에 공백을 얼마든지 추가할 수 있으며, 각 줄의 시작 부분에 최소한 하나의 공백이나 탭을 사용하여 여러 줄로 확장할 수 있습니다.
요청 메시지와 응답 메시지 모두 엔터티 정보를 포함할 수 있습니다. 엔터티 정보는 일반적으로 엔터티 헤더 필드와 엔터티로 구성됩니다. 엔터티 헤더 필드에는 엔터티에 대한 원본 정보가 포함됩니다. 엔터티 헤더에는 Allow, Content-Base, Content-Encoding, Content-Language, Content-Length, Content-Location, Content-MD5, Content-Range, Content-Type, Etag가 포함됩니다. 및 만료, 마지막 수정, 확장 헤더.
Content-Type은 반환된 메시지에서 매우 중요한 콘텐츠로, 후속 문서가 어떤 MIME 유형에 속하는지 나타냅니다. 콘텐츠 유형: [유형]/[하위 유형] 매개변수. 예를 들어, 가장 일반적인 것은 text/html입니다. 이는 반환된 콘텐츠가 텍스트 유형이고 이 텍스트가 HTML 형식임을 의미합니다. 원칙적으로 브라우저는 Content-Type을 기반으로 반환된 메시지 본문 내용을 표시하는 방법을 결정합니다.
유형은 다음과 같은 형식을 갖습니다.
텍스트: 텍스트 정보의 표준화된 표현에 사용됩니다. 텍스트 메시지는 여러 문자 집합 및/또는 여러 형식일 수 있습니다.
멀티파트: 메시지 본문의 여러 부분을 연결하는 데 사용됩니다. 이러한 부분은 다양한 유형의 데이터일 수 있습니다.
애플리케이션: 애플리케이션 데이터 또는 바이너리 데이터를 전송하는 데 사용됩니다. >메시지: 이메일 메시지를 패키지하는 데 사용됩니다.
이미지: 정적 이미지 데이터를 전송하는 데 사용됩니다.
오디오: 오디오 또는 사운드 데이터를 전송하는 데 사용됩니다. : 오디오와 함께 편집된 비디오 데이터 형식이 가능한 동적 이미지 데이터를 전송하는 데 사용됩니다.
subtype은 유형의 세부 형태를 지정하는 데 사용됩니다. 콘텐츠 유형/하위 유형 쌍 세트 및 관련 매개변수는 시간이 지남에 따라 증가합니다. 이러한 값이 질서 있고 공개적인 방식으로 개발되도록 하기 위해 MIME은 IANA(Internet Assigned Numbers Authority)를 중앙 등록 메커니즘으로 사용하여 이러한 값을 관리합니다.
매개변수는 추가 정보를 지정하는 데 사용할 수 있으며, 더 많은 경우 text/plain 및 text/htm과 같은 텍스트 인코딩 방법을 지정하는 데 사용되는 charset 매개변수입니다. MIME은 유형을 기반으로 기본 하위 유형을 설정합니다. 클라이언트가 메시지의 하위 유형을 결정할 수 없는 경우 메시지는 처리를 위한 기본 하위 유형으로 처리됩니다. 텍스트의 기본값은 text/plain이고, 애플리케이션의 기본값은 application/octet-stream이며, 멀티파트는 기본적으로 멀티파트/혼합으로 처리됩니다. IE6 브라우저의 경우 Content-Type의 유형이 실제 메시지 본문 유형과 일치하지 않으면 콘텐츠의 유형에 따라 실제 유형을 분석하여 JPG 및 GIF와 같은 일반적인 이미지 형식에 대해 올바를 수 있습니다. Content-Type에 작성된 내용에 관계없이.
지정된 Content-Type이 브라우저에서 직접 열 수 있는 유형인 경우 브라우저는 해당 콘텐츠를 직접 열고 표시합니다. 다른 애플리케이션과 연결된 유형인 경우 레지스트리를 검색해야 합니다. 이러한 유형의 등록에 대해 묻지 않고 직접 열 수 있도록 허용하면 관련 응용 프로그램을 직접 호출하여 파일을 열 수 있지만 직접 열 수 없는 경우에는 열 수 있는지 묻습니다. . 어떤 애플리케이션과도 연관되지 않은 유형의 경우 IE 브라우저는 이를 여는 방법을 모릅니다. 이때 IE6은 이를 XML로 처리하여 열려고 시도합니다.
파일을 다운로드하려면 http 헤더에 파일을 추가하면 됩니다:
fprintf(file, "Content-Disposition:attachment; filename="%s " rn", fileName);
테스트 후 html, pdf, gif 등 원래 웹페이지에서 열렸던 파일은 정상적으로 다운로드 가능합니다.
'hqx' => 'application/mac-binhex40',
'cpt' => 'application/mac-compactpro',
'doc' => 'application/msword',
'bin' => '응용 프로그램/옥텟 스트림',
'dms' => '응용 프로그램/옥텟 스트림',
'lha' => '응용 프로그램/옥텟 스트림',
'lzh' => '응용 프로그램/옥텟 스트림',
'exe' => '응용 프로그램/옥텟 스트림',
'class' => '응용 프로그램/옥텟 -스트림',
'so ' => '응용 프로그램/옥텟 스트림',
'dll' => '응용 프로그램/옥텟 스트림',
'oda' => '응용 프로그램/oda',
'pdf' => ' 응용 프로그램/pdf',
'ai' => '응용 프로그램/포스트스크립트',
'eps' => '응용 프로그램/포스트스크립트',
'ps' => '응용프로그램/포스트스크립트',
'smi' => '애플리케이션/smil',
'smil' => '애플리케이션/smil',
'mif' => 'application/vnd.mif',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-powerpoint',
'wbxml' => 'application/vnd.wap.wbxml',
'wmlc' => 'application/vnd.wap.wmlc',
'wmlsc' => 'application/vnd.wap.wmlscriptc',
'bcpio' => 'application/x-bcpio',
'vcd' => 'application/x-cdlink',
'pgn' => 'application/x-chess-pgn',
'cpio' => 'application/x-cpio',
'csh' => 'application/x-csh',
'dcr' => 'application/x-director',
'dir' => 'application/x-director',
'dxr' => 'application/x-director',
'dvi' => 'application/x-dvi',
'spl' => 'application/x-futuresplash',
'gtar' => 'application/x-gtar',
'hdf' => 'application/x-hdf',
'js' => 'application/x-javascript',
'skp' => 'application/x-koan',
'skd' => 'application/x-koan',
'skt' => 'application/x-koan',
'skm' => 'application/x-koan',
'라텍스' => 'application/x-latex',
'nc' => 'application/x-netcdf',
'cdf' => 'application/x-netcdf',
'sh' => 'application/x-sh',
'shar' => 'application/x-shar',
'swf' => 'application/x-shockwave-flash',
'앉아' => 'application/x-stuffit',
'sv4cpio' => 'application/x-sv4cpio',
'sv4crc' => 'application/x-sv4crc',
'tar' => 'application/x-tar',
'tcl' => 'application/x-tcl',
'tex' => 'application/x-tex',
'texinfo' => 'application/x-texinfo',
'texi' => 'application/x-texinfo',
't' => 'application/x-troff',
'tr' => 'application/x-troff',
'roff' => 'application/x-troff',
'man' => 'application/x-troff-man',
'나' => 'application/x-troff-me',
'ms' => 'application/x-troff-ms',
'ustar' => 'application/x-ustar',
'src' => 'application/x-wais-source',
'xhtml' => 'application/xhtml xml',
'xht' => 'application/xhtml xml',
'zip' => '응용 프로그램/zip',
'au' => '오디오/기본',
'snd' => '오디오/기본',
'중간' => '오디오/미디',
'미디' => '오디오/미디',
'kar' => '오디오/미디',
'mpga' => '오디오/mpeg',
'mp2' => '오디오/mpeg',
'mp3' => '오디오/mpeg',
'aif' => 'audio/x-aiff',
'aiff' => 'audio/x-aiff',
'aifc' => 'audio/x-aiff',
'm3u' => 'audio/x-mpegurl',
'ram' => 'audio/x-pn-realaudio',
'rm' => 'audio/x-pn-realaudio',
'rpm' => 'audio/x-pn-realaudio-plugin',
'ra' => 'audio/x-realaudio',
'wav' => '오디오/x-wav',
'pdb' => '화학/x-pdb',
'xyz' => '화학물질/x-xyz',
'bmp' => '이미지/bmp',
'gif' => '이미지/gif',
'ief' => '이미지/ief',
'jpeg' => '이미지/jpeg',
'jpg' => '이미지/jpeg',
'jpe' => '이미지/jpeg',
'png' => '이미지/png',
'tiff' => '이미지/tiff',
'tif' => '이미지/tiff',
'djvu' => 'image/vnd.djvu',
'djv' => 'image/vnd.djvu',
'wbmp' => 'image/vnd.wap.wbmp',
'ras' => 'image/x-cmu-raster',
'pnm' => 'image/x-portable-anymap',
'pbm' => 'image/x-portable-bitmap',
'pgm' => '이미지/x-portable-graymap',
'ppm' => 'image/x-portable-pixmap',
'rgb' => '이미지/x-rgb',
'xbm' => '이미지/x-xbitmap',
'xpm' => '이미지/x-xpixmap',
'xwd' => 'image/x-xwindowdump',
'igs' => '모델/iges',
'iges' => '모델/iges',
'msh' => '모델/메시',
'메시' => '모델/메시',
'사일로' => '모델/메시',
'wrl' => '모델/vrml',
'vrml' => '모델/vrml',
'css' => '텍스트/css',
'html' => '텍스트/html',
'htm' => '텍스트/html',
'asc' => '텍스트/일반',
'txt' => '텍스트/일반',
'rtx' => '텍스트/리치텍스트',
'rtf' => 'text/rtf',
'sgml' => '텍스트/sgml',
'sgm' => '텍스트/sgml',
'tsv' => '텍스트/탭으로 구분된 값',
'wml' => 'text/vnd.wap.wml',
'wmls' => 'text/vnd.wap.wmlscript',
'etx' => '텍스트/x-setext',
'xsl' => '텍스트/xml',
'xml' => 'text/xml',
'mpeg' => '비디오/mpeg',
'mpg' => '비디오/mpeg',
'mpe' => '비디오/mpeg',
'qt' => '동영상/퀵타임',
'mov' => '동영상/퀵타임',
'mxu' => 'video/vnd.mpegurl',
'avi' => '동영상/x-ms동영상',
'영화' => 'video/x-sgi-movie',
'ice' => 'x-컨퍼런스/x-cooltalk',