To learn content-type, you must know in advance what it is and what it is for.
The HTTP protocol (RFC2616) adopts a request/response model. The client sends a request to the server, and the request header contains the requested method, URI, protocol version, and a MIME-like message structure containing the request modifier, client information and content. The server responds with a status line, and the corresponding content includes the version of the message protocol, the success or error encoding plus the server information, entity meta information, and possible entity content.
Usually an HTTP message consists of a starting line, one or more header fields, a blank line that ends with the header field and an optional message body. The header field of HTTP includes four parts: general header, request header, response header and entity header. Each header field consists of three parts: a domain name, a colon (:) and a domain value. Domain names are case-independent, any number of space characters can be added before the domain value, and the header fields can be expanded to multiple lines, using at least one space or tab character at the beginning of each line.
Both the request message and the response message can contain entity information, which generally consist of the entity header field and entity. The entity header field contains original information about the entity. The entity header includes Allow, Content-Base, Content-Encoding, Content-Language, Content-Length, Content-Location, Content-MD5, Content-Range, Content-Type, Etag, Expires, Last-Modified, and extension-header.
Content-Type is a very important content in the return message, indicating what MIME type the subsequent document belongs to. Content-Type: [type]/[subtype]; parameter. For example, the most common one is text/html, which means that the returned content is text type, and the text is in HTML format. In principle, the browser will decide how to display the returned message body content based on Content-Type.
type has the following formText: Text information for standardized representation, the text message may be of multiple character sets and or in multiple formats;
Multipart: Used to connect multiple parts of the message body to form a message, and these parts can be different types of data;
Application: used to transmit application data or binary data;
Message: Used to wrap an E-mail message;
Image: used to transmit static image data;
Audio: used to transmit audio or audio data;
Video: Used to transmit dynamic image data, which can be a video data format edited with audio.
subtype is used to specify the detailed form of the type. The set of content-type/subtype pairs and the parameters associated with this will grow over time. To ensure that these values are developed in an ordered and public state, MIME uses the Internet Assigned Numbers Authority (IANA) as the central registration mechanism to manage these values.
The parameter can be used to specify additional information, and in more cases it is a charset parameter used to specify text encoding methods such as text/plain and text/htm. MIME has set the default subtype based on the type. When the client cannot determine the subtype of the message, the message is treated as the default subtype for processing. Text is text/plain by default, Application is application/octet-stream by default, and Multipart is regarded as multipart/mixed by default. For IE6 browsers, if the type in Content-Type is inconsistent with the actual message body type, it will analyze what type should be based on the type in the content, and can correctly identify common image formats such as JPG and GIF, regardless of what is written in Content-Type.
If the type specified in Content-Type is a type that the browser can open directly, then the browser will open its content and display it. If it is a type associated with other applications, you need to look for the registration status of this type in the registry. If it is allowed to open directly without asking, the associated application will be called up to open the file, but if it is not allowed to open directly, you will ask whether to open it. For types that are not associated with any application, IE browser does not know how it should be opened, and IE6 will try to open it as XML.
If you want to implement file download, you can add it in the header of http:fprintf(file, Content-Disposition:attachment; filename=/%s/ /r/n, fileName);
After testing, html, pdf, gif and other files opened in web pages can be downloaded normally.
'hqx' => 'application/mac-binhex40',
'cpt' => 'application/mac-compactpro',
'doc' => 'application/msword',
'bin' => 'application/octet-stream',
'dms' => 'application/octet-stream',
'lha' => 'application/octet-stream',
'lzh' => 'application/octet-stream',
'exe' => 'application/octet-stream',
'class' => 'application/octet-stream',
'so' => 'application/octet-stream',
'dll' => 'application/octet-stream',
'oda' => 'application/oda',
'pdf' => 'application/pdf',
'ai' => 'application/postscript',
'eps' => 'application/postscript',
'ps' => 'application/postscript',
'smi' => 'application/smil',
'smil' => 'application/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',
'latex' => 'application/x-latex',
'nc' => 'application/x-netcdf',
'cdf' => 'application/x-netcdf',
'sh' => 'application/x-sh',
'shar' => 'application/x-shar',
'swf' => 'application/x-shockwave-flash',
'sit' => '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',
'me' => 'application/x-troff-me',
'ms' => 'application/x-troff-ms',
'usstar' => 'application/x-usstar',
'src' => 'application/x-wais-source',
'xhtml' => 'application/xhtml+xml',
'xht' => 'application/xhtml+xml',
'zip' => 'application/zip',
'au' => 'audio/basic',
'snd' => 'audio/basic',
'mid' => 'audio/midi',
'midi' => 'audio/midi',
'kar' => 'audio/midi',
'mpga' => 'audio/mpeg',
'mp2' => 'audio/mpeg',
'mp3' => 'audio/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' => 'audio/x-wav',
'pdb' => 'chemical/x-pdb',
'xyz' => 'chemical/x-xyz',
'bmp' => 'image/bmp',
'gif' => 'image/gif',
'ief' => 'image/ief',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'jpe' => 'image/jpeg',
'png' => 'image/png',
'tiff' => 'image/tiff',
'tif' => 'image/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' => 'image/x-portable-graymap',
'ppm' => 'image/x-portable-pixmap',
'rgb' => 'image/x-rgb',
'xbm' => 'image/x-xbitmap',
'xpm' => 'image/x-xpixmap',
'xwd' => 'image/x-xwindowdump',
'igs' => 'model/iges',
'iges' => 'model/iges',
'msh' => 'model/mesh',
'mesh' => 'model/mesh',
'silo' => 'model/mesh',
'wrl' => 'model/vrml',
'vrml' => 'model/vrml',
'css' => 'text/css',
'html' => 'text/html',
'htm' => 'text/html',
'asc' => 'text/plain',
'txt' => 'text/plain',
'rtx' => 'text/richtext',
'rtf' => 'text/rtf',
'sgml' => 'text/sgml',
'sgm' => 'text/sgml',
'tsv' => 'text/tab-separated-values',
'wml' => 'text/vnd.wap.wml',
'wmls' => 'text/vnd.wap.wmlscript',
'etx' => 'text/x-setext',
'xsl' => 'text/xml',
'xml' => 'text/xml',
'mpeg' => 'video/mpeg',
'mpg' => 'video/mpeg',
'mpe' => 'video/mpeg',
'qt' => 'video/quicktime',
'mov' => 'video/quicktime',
'mxu' => 'video/vnd.mpegurl',
'avi' => 'video/x-msvideo',
'movie' => 'video/x-sgi-movie',
'ice' => 'x-conference/x-cooltalk',