当前位置:编程学习 > asp >>

C# asp.net中四种文件下载方法

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

 
 
    Response.ContentType = "application/x-zip-compressed"; 
    Response.AddHeader("Content-Disposition", "attachment;filename=8月份报表.zip"); 
    string filename = Server.MapPath("DownLoad/8月份报表.zip"); 
    //指定编码 防止中文文件名乱码 
    Response.HeaderEncoding = System.Text.Encoding.GetEncoding("gb2312"); 
    Response.TransmitFile(filename); 

 
//WriteFile实现下载 
protected void Button2_Click(object sender, EventArgs e) 

    string fileName = "asd.txt";//客户端保存的文件名 
    string filePath = Server.MapPath("DownLoad/aaa.txt");//路径 
 
    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(); 

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

 
    string fileName = "aaa.txt";//客户端保存的文件名 
    string filePath = Server.MapPath("DownLoad/aaa.txt");//路径 
    System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath); 
    if (fileInfo.Exists == true) 
    { 
        const long ChunkSize = 102400;//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 = "aaa.txt";//客户端保存的文件名 
    string filePath = Server.MapPath("DownLoad/aaa.txt");//路径 
 
    //以字符流的形式下载文件 
    FileStream fs = new FileStream(filePath, FileMode.Open); 
    byte[] bytes = new byte[(int)fs.Length]; 
    fs.Read(bytes, 0, bytes.Length); 
    fs.Close(); www.zzzyk.com
    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(); 

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,