zoukankan      html  css  js  c++  java
  • 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();
    }
    }

  • 相关阅读:
    HDU2303(数论)大整数求余+素数筛选
    2015 多校联赛 ——HDU5360(贪心+优先队列)
    2015 多校联赛 ——HDU5363(快速幂)
    2015 多校联赛 ——HDU5353(构造)
    2015 多校联赛 ——HDU5348(搜索)
    2015 多校联赛 ——HDU5350(huffman)
    hibernate投影查询
    Hibernate中Criteria的完整用法
    mysql 常用查询语句记录
    ssh整合步骤整理
  • 原文地址:https://www.cnblogs.com/soonfly/p/1419272.html
Copyright © 2011-2022 走看看