• 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();
    }
    }

  • 相关阅读:
    nefu 628 Garden visiting
    codeforces 814 C. An impassioned circulation of affection 【尺取法 or DP】
    bzoj 2111: [ZJOI2010]Perm 排列计数 (dp+卢卡斯定理)
    Codeforces Round #423 (Div. 2)
    hdu 5955 Guessing the Dice Roll 【AC自动机+高斯消元】
    poj1322 Chocolate 【 概率DP 】
    poj 3414 Pots 【BFS+记录路径 】
    hdu5194 DZY Loves Balls 【概率论 or 搜索】
    51nod 1515 明辨是非 [并查集+set]
    hdu 1175 连连看 [DFS]
  • 原文地址:https://www.cnblogs.com/soonfly/p/1419272.html
Copyright © 2020-2023  润新知