Response.ContentType 类型简介

来源:互联网 发布:会计软件中的成本核算 编辑:程序博客网 时间:2024/04/28 16:58

Response.ContentType 类型简介一简单用法
            服务器送给客户端的数据包类型可以是text/html文本,也可以是gif/jpeg图形文件,所以每次传输前,我们都必须告知客户端将要传输的文件类型,一般默认情况下为“Text/Html”类型。

                常用的类型包括:
                <% Response.ContentType = "text/HTML" %> 
                    <% Response.ContentType = "image/GIF" %> 
                    <% Response.ContentType = "image/JPEG" %> 
                    <% Response.ContentType = "text/plain" %> 
                    <% Response.ContentType = "image/JPEG" %> 
                     <% Response.ContentType = "application/x-cdf" %>
            用于作为文本内容返回而不是已解释的 HTML 语句:Response.ContentType = "text/plain"
                    <% Response.ContentType = "text/plain" 
                       Response.write(now()&"会被执行么?") 
                    %> 
                你可以注意到:页面提供下载,页面中的ASP内容被解释执行了的

                 程序文件以XLS文件被提供下载 Response.ContentType = 
            "application/vnd.ms-excel" 
                    <% Response.ContentType = "application/vnd.ms-excel" 
                       Response.write("本页面调试会出现下载对话框提供下载,保存类型为XLS") 
                    %> 
                 实现歌曲连续播放 response.ContentType="audio/x-pn-realaudio" 
                    <% dim ramstr 
                       ramstr="" 
                       set rs=server.createobject("adodb.recordset") 
                       sql="XXXXXXXXXXX" 
                       rs.open sql,conn,1,3 'conn已定义 
                       do while not rs.eof 
                       ramstr=ramstr&rs("url")&vbCrLf 
                        rs.movenext 
                        loop 
                       rs.close 
                       response.ContentType="audio/x-pn-realaudio" 
                       'response.ContentType="audio/x-mpegurl" 
                       response.write ramstr 
                       %>
            response.write 输出的时候,由于定义了response.ContentType 
            所以输出歌曲地址的时候会自动调用符合相应格式的软件来播放歌曲,不过前提是播放歌曲的软件必须先安装的。
            二、Response.ContentType 的所有类型:
            $mimetypes = array(
                 'ez'         => 'application/andrew-inset',
                 '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',
                 'ustar'         => 'application/x-ustar',
                 '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',
            );
            三、超过100M文件的下载
            如何利用ContentType 
            来,在服务器上提供一个.xls后缀的文件点击下载而不是直接在浏览器中打开。(注意:于上程序文件以XLS文件被提供下载有所不同)

            Response.ContentType = 
            "application/x-download",让整个程序文件点击下载了。怎么办好呢???

            A:解决方案1. 利用Response.WriteFile的文件输出操作 
            具体在按钮点击事件中添加一下代码 
            private void btnDownload_Click(object sender, System.EventArgs e) 
            { 
            string DownloadFileName=Server.MapPath("file.xls"); 
            string filepath = DownloadFileName;

            // Identify the file name. 
            string filename = System.IO.Path.GetFileName(filepath);

            Response.Clear();

            // Specify the Type of the downloadable file. 
            Response.ContentType = "application/octet-stream";

            // Set the Default file name in the FileDownload dialog box. 
            Response.AddHeader("Content-Disposition", "attachment; filename=" + 
            filename);

            Response.Flush();

            // Download the file. 
            Response.WriteFile(filepath); 
            } 
            以上代码也适合用于小于100MB的小文件下载 
            如果是大于100MB的大文件下载可以用Response.FileStream 。

            C#代码如下:(将 DownloadFileName 替换为大于 100 MB 的文件的名称。)

            System.IO.Stream iStream = null;

            // Buffer to read 10K bytes in chunk: 
            byte[] buffer = new Byte[10000];

            // Length of the file: 
            int length;

            // Total bytes to read: 
            long dataToRead;

            // Identify the file to download including its path. 
            string filepath = "DownloadFileName";

            // Identify the file name. 
            string filename = System.IO.Path.GetFileName(filepath);

            try 
            { 
            // Open the file. 
            iStream = new System.IO.FileStream(filepath, 
            System.IO.FileMode.Open, 
            System.IO.FileAccess.Read,System.IO.FileShare.Read);//用文件流来处理


            // Total bytes to read: 
            dataToRead = iStream.Length;

            Response.ContentType = "application/octet-stream";//问题就在这里,解决百M关口 
            Response.AddHeader("Content-Disposition", "attachment; filename=" + 
            filename);

            // Read the bytes. 
            while (dataToRead > 0) 
            { 
            // Verify that the client is connected. 
            if (Response.IsClientConnected) 
            { 
            // Read the data in buffer. 
            length = iStream.Read(buffer, 0, 10000);

            // Write the data to the current output stream. 
            Response.OutputStream.Write(buffer, 0, length);

            // Flush the data to the HTML output. 
            Response.Flush();

            buffer= new Byte[10000]; 
            dataToRead = dataToRead - length; 
            } 
            else 
            { 
            //prevent infinite loop if user disconnects 
            dataToRead = -1; 
            } 
            } 
            } 
            catch (Exception ex) 
            { 
            // Trap the error, if any. 
            Response.Write("Error : " + ex.Message); 
            } 
            finally 
            { 
            if (iStream != null) 
            { 
            //Close the file. 
            iStream.Close(); 
            } 
            } 如何利用ContentType 
            来,在服务器上提供一个.xls后缀的文件点击下载而不是直接在浏览器中打开。(注意:于上程序文件以XLS文件被提供下载有所不同)

            Response.ContentType = 
            "application/x-download",让整个程序文件点击下载了。怎么办好呢???

            A:解决方案1. 利用Response.WriteFile的文件输出操作 
            具体在按钮点击事件中添加一下代码 
            private void btnDownload_Click(object sender, System.EventArgs e) 
            { 
            string DownloadFileName=Server.MapPath("file.xls"); 
            string filepath = DownloadFileName;

            // Identify the file name. 
            string filename = System.IO.Path.GetFileName(filepath);

            Response.Clear();

            // Specify the Type of the downloadable file. 
            Response.ContentType = "application/octet-stream";

            // Set the Default file name in the FileDownload dialog box. 
            Response.AddHeader("Content-Disposition", "attachment; filename=" + 
            filename);

            Response.Flush();

            // Download the file. 
            Response.WriteFile(filepath); 
            } 
            以上代码也适合用于小于100MB的小文件下载 
            如果是大于100MB的大文件下载可以用Response.FileStream 。

            C#代码如下:(将 DownloadFileName 替换为大于 100 MB 的文件的名称。)

            System.IO.Stream iStream = null;

            // Buffer to read 10K bytes in chunk: 
            byte[] buffer = new Byte[10000];

            // Length of the file: 
            int length;

            // Total bytes to read: 
            long dataToRead;

            // Identify the file to download including its path. 
            string filepath = "DownloadFileName";

            // Identify the file name. 
            string filename = System.IO.Path.GetFileName(filepath);

            try 
            { 
            // Open the file. 
            iStream = new System.IO.FileStream(filepath, 
            System.IO.FileMode.Open, 
            System.IO.FileAccess.Read,System.IO.FileShare.Read);//用文件流来处理


            // Total bytes to read: 
            dataToRead = iStream.Length;

            Response.ContentType = "application/octet-stream";//问题就在这里,解决百M关口 
            Response.AddHeader("Content-Disposition", "attachment; filename=" + 
            filename);

            // Read the bytes. 
            while (dataToRead > 0) 
            { 
            // Verify that the client is connected. 
            if (Response.IsClientConnected) 
            { 
            // Read the data in buffer. 
            length = iStream.Read(buffer, 0, 10000);

            // Write the data to the current output stream. 
            Response.OutputStream.Write(buffer, 0, length);

            // Flush the data to the HTML output. 
            Response.Flush();

            buffer= new Byte[10000]; 
            dataToRead = dataToRead - length; 
            } 
            else 
            { 
            //prevent infinite loop if user disconnects 
            dataToRead = -1; 
            } 
            } 
            } 
            catch (Exception ex) 
            { 
            // Trap the error, if any. 
            Response.Write("Error : " + ex.Message); 
            } 
            finally 
            { 
            if (iStream != null) 
            { 
            //Close the file. 
            iStream.Close(); 
            } 
            }

0 0