zoukankan      html  css  js  c++  java
  • ASP.NET C# 文件下载

    1.文件下载到客户端

    //WriteFile实现下载

    protected void Download_Click(object sender, EventArgs e)
    {
      string fileName = "20151223Test.doc";//客户端保存的文件名
      //string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
      string filePath = Server.MapPath(@"files est.doc");//路径

      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.ContentEncoding = System.Text.Encoding.UTF8;
      Response.WriteFile(fileInfo.FullName);
      Response.Flush();
      Response.End();
    }

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

      Response.ContentType = "application/x-zip-compressed";
      Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
      string filename = Server.MapPath(@"filesDownloadsText.zip");
      Response.TransmitFile(filename);
      //Response.TransmitFile 需要 :Microsoft .NET Framework 1.1 Service Pack 1 支持!!
    }

    //流方式下载
    protected void DownLoadFL_Click(object sender, EventArgs e)
    {
      string fileName = "20151223aaa.doc";//客户端保存的文件名
      //string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
      string filePath = Server.MapPath(@"files租户装修手册-印象城.doc");//路径

      //以字符流的形式下载文件
      using (FileStream fs = new FileStream(filePath, FileMode.Open))
      {
        byte[] bytes = new byte[(int)fs.Length];
        fs.Read(bytes, 0, bytes.Length);

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

    //流方式下载 2
    protected void DownLoadFL2_Click(object sender, EventArgs e)
    {
      string fileName = "20151223aaa.doc";//客户端保存的文件名
      //string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
      string filePath = Server.MapPath(@"files租户装修手册-印象城.doc");//路径

      //以字符流的形式下载文件
      using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
      {
        byte[] bytes = new byte[(int)fs.Length];
        using (BinaryWriter bw = new BinaryWriter(fs))
        {
          bw.Write(bytes);
          bw.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();
        }
      }
    }

     //http请求常用下载方式;

    //通过webClient方式

    WebClient client = new WebClient();
    string url="http://down6.3987.com:801/2010/office_3987.com.zip";
    Stream strm = client.OpenRead("http://down6.3987.com:801/2010/office_3987.com.zip");
    string filename=url.Substring(url.LastIndexOf('/')+1);
    int count = 0;
    byte[] buffer = new byte[4096];
    FileStream fs = new FileStream(Application.StartupPath+"//"+filename, FileMode.Create);
    while ((count = strm.Read(buffer, 0, buffer.Length)) > 0) {

    fs.Write(buffer, 0, count);

    }
    fs.Close();
    strm.Close();
    strm.Dispose();
    fs.Dispose();

    //通过原生态HttpWebrequest方式

    string url = "http://down6.3987.com:801/2010/office_3987.com.zip";

    string filename = url.Substring(url.LastIndexOf('/') + 1);
    //用webClient方式创建http请求
    HttpWebRequest req =(HttpWebRequest)HttpWebRequest.Create(url) ; //创建链接

    //获取服务其数据
    HttpWebResponse res = (HttpWebResponse)req.GetResponse();

    Stream mystream = res.GetResponseStream();

    //开始文件操作
    FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory+"//"+filename, FileMode.Create, FileAccess.Write, FileShare.None);

    byte[] buffer=new byte[1024];
    int count=0;
    while((count=mystream.Read(buffer,0,1024))>0)
    {
    fs.Write(buffer, 0, count);
    }

    fs.Close();
    mystream.Close();
    fs.Dispose();

    参考:C#中http请求下载的常用方式demo

  • 相关阅读:
    51nod 237 最大公约数之和 V3 杜教筛
    luogu P4213 【模板】杜教筛(Sum)
    BZOJ 3527: [Zjoi2014]力 FFT
    凸多边形 HRBUST
    luogu P1354 房间最短路问题 计算几何_Floyd_线段交
    几何基础
    BZOJ 1862: [Zjoi2006]GameZ游戏排名系统 Hash + Splay
    BZOJ3529: [Sdoi2014]数表 莫比乌斯反演_树状数组
    BZOJ 2820: YY的GCD 莫比乌斯反演 + 数学推导 + 线性筛
    迭代器,三元表达式,列表生成式,字典生成式,生成器,递归(没深入理解)
  • 原文地址:https://www.cnblogs.com/wangfuyou/p/5069054.html
Copyright © 2011-2022 走看看