zoukankan      html  css  js  c++  java
  • [转]asp.net response.ContentType 下载文件的四种方法

     
    代码

            
    protected void Button1_Click(object sender, EventArgs e)
            {
                
    //TransmitFile实现下载

                
    /**/
                
    /*
                 微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite
                 下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。
                 代码如下:
                
    */

                Response.ContentType 
    = "application/x-zip-compressed";
                Response.AddHeader(
    "Content-Disposition""attachment;filename=keji.rar");
                
    string filename = Server.MapPath("keji.rar");
                Response.TransmitFile(filename);
                Response.Write(
    "<script language=\"javascript\" type=\"text/javascript\">");
                Response.Write(
    "alert(\"下载成功\");");
                Response.Write(
    "window.location.href=\"C_SC.aspx\";");
                Response.Write(
    "</script>");
            }

            
    protected void Button2_Click(object sender, EventArgs e)
            {

                
    //WriteFile实现下载
                string fileName = "ceshi.rar";//客户端保存的文件名
                string filePath = Server.MapPath("keji.rar");//路径

                FileInfo fileInfo 
    = new FileInfo(filePath);
                Response.Clear();
                Response.ClearContent();
                Response.ClearHeaders();
                Response.AddHeader(
    "Content-Disposition""attachment;filename=" + fileName);
                Response.AddHeader(
    "Content-Length", fileInfo.Length.ToString());
                Response.AddHeader(
    "Content-Transfer-Encoding""binary");
                Response.ContentType 
    = "application/octet-stream";
                Response.ContentEncoding 
    = System.Text.Encoding.GetEncoding("gb2312");
                Response.WriteFile(fileInfo.FullName);
                Response.Flush();
                Response.End();
            }

            
    protected void Button3_Click(object sender, EventArgs e)
            {
                
    //WriteFile分块下载

                
    string fileName = "GhostXP.iso";//客户端保存的文件名
                string filePath = Server.MapPath("GhostXP7.7.iso");//路径

                System.IO.FileInfo fileInfo 
    = new System.IO.FileInfo(filePath);

                
    if (fileInfo.Exists == true)
                {
                    
    const long ChunkSize = 409600;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
                    byte[] buffer = new byte[ChunkSize];

                    Response.Clear();
                    System.IO.FileStream iStream 
    = System.IO.File.OpenRead(filePath);
                    
    long dataLengthToRead = iStream.Length;//获取下载的文件总大小
                    Response.ContentType = "application/octet-stream";
                    Response.AddHeader(
    "Content-Disposition""attachment; filename=" + HttpUtility.UrlEncode(fileName));
                    
    while (dataLengthToRead > 0 && Response.IsClientConnected)
                    {
                        
    int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
                        Response.OutputStream.Write(buffer, 0, lengthRead);
                        Response.Flush();
                        dataLengthToRead 
    = dataLengthToRead - lengthRead;
                    }
                    Response.Close();
                }
            }

            
    //字符流方式下载文件
            protected void Button4_Click(object sender, EventArgs e)
            {
                
    string fileName = "ce2.rar";//客户端保存的文件名
                string filePath = Server.MapPath("keji.rar");//路径

                
    //以字符流的形式下载文件
                FileStream fs = new FileStream(filePath, FileMode.Open);
                
    byte[] bytes = new byte[(int)fs.Length];
                fs.Read(bytes, 
    0, bytes.Length);
                fs.Close();
                Response.ContentType 
    = "application/octet-stream";
                
    //通知浏览器下载文件而不是打开
                Response.AddHeader("Content-Disposition""attachment;   filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
                Response.BinaryWrite(bytes);
                Response.Flush();
                Response.End();
            }
  • 相关阅读:
    Vue 2.x windows环境下安装
    VSCODE官网下载缓慢或下载失败 解决办法
    angular cli 降级
    Win10 VS2019 设置 以管理员身份运行
    XSHELL 连接 阿里云ECS实例
    Chrome浏览器跨域设置
    DBeaver 执行 mysql 多条语句报错
    DBeaver 连接MySql 8.0 报错 Public Key Retrieval is not allowed
    DBeaver 连接MySql 8.0报错 Unable to load authentication plugin 'caching_sha2_password'
    Linux系统分区
  • 原文地址:https://www.cnblogs.com/yvesliao/p/1776866.html
Copyright © 2011-2022 走看看