zoukankan      html  css  js  c++  java
  • C# 文件下载四方法

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;
     
    public partial class _Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
     
    }
     
    //TransmitFile实现下载
    protected void Button1_Click(object sender, EventArgs e)
    {
    Response.ContentType = "application/x-zip-compressed";
    Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
    string filename = Server.MapPath("DownLoad/z.zip");
    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();
    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();
     
    }
    }
    View Code
  • 相关阅读:
    BZOJ 1977: [BeiJing2010组队]次小生成树 Tree( MST + 树链剖分 + RMQ )
    BZOJ 2134: 单选错位( 期望 )
    BZOJ 1030: [JSOI2007]文本生成器( AC自动机 + dp )
    BZOJ 2599: [IOI2011]Race( 点分治 )
    BZOJ 3238: [Ahoi2013]差异( 后缀数组 + 单调栈 )
    ZOJ3732 Graph Reconstruction Havel-Hakimi定理
    HDU5653 Bomber Man wants to bomb an Array 简单DP
    HDU 5651 xiaoxin juju needs help 水题一发
    HDU 5652 India and China Origins 并查集
    HDU4725 The Shortest Path in Nya Graph dij
  • 原文地址:https://www.cnblogs.com/tuosang/p/3158954.html
Copyright © 2011-2022 走看看