zoukankan      html  css  js  c++  java
  • asp.net下载文件几种方式

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

      Response.ContentType = "application/x-zip-compressed";
      Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
      string filename = Server.MapPath("DownLoad/aaa.zip");
      Response.TransmitFile(filename);
      }

      //WriteFile实现下载
      protected void Button2_Click(object sender, EventArgs e)
      {
      /*
      using System.IO;
       
      */

      string fileName ="aaa.zip";//客户端保存的文件名
      string filePath=Server.MapPath("DownLoad/aaa.zip");//路径

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

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

      //以字符流的形式下载文件
      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();

      } 
  • 相关阅读:
    PAT Advanced 1067 Sort with Swap(0, i) (25分)
    PAT Advanced 1048 Find Coins (25分)
    PAT Advanced 1060 Are They Equal (25分)
    PAT Advanced 1088 Rational Arithmetic (20分)
    PAT Advanced 1032 Sharing (25分)
    Linux的at命令
    Sublime Text3使用指南
    IntelliJ IDEA创建第一个Groovy工程
    Sublime Text3 安装ftp插件
    Sublime Text3配置Groovy运行环境
  • 原文地址:https://www.cnblogs.com/zhycyq/p/3363354.html
Copyright © 2011-2022 走看看