zoukankan      html  css  js  c++  java
  • Asp.Net 下载文件的几种方式

    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();
    
      } 
    
    
    
    
    
    1下面是更详细的ContentType
    'ez' => 'application/andrew-inset', 
    'hqx' => 'application/mac-binhex40', 
    'cpt' => 'application/mac-compactpro', 
    'doc' => 'application/msword', 
    'bin' => 'application/octet-stream', 
    'dms' => 'application/octet-stream', 
    'lha' => 'application/octet-stream', 
    'lzh' => 'application/octet-stream', 
    'exe' => 'application/octet-stream', 
    'class' => 'application/octet-stream', 
    'so' => 'application/octet-stream', 
    'dll' => 'application/octet-stream', 
    'oda' => 'application/oda', 
    'pdf' => 'application/pdf', 
    'ai' => 'application/postscript', 
    'eps' => 'application/postscript', 
    'ps' => 'application/postscript', 
    'smi' => 'application/smil', 
    'smil' => 'application/smil', 
    'mif' => 'application/vnd.mif', 
    'xls' => 'application/vnd.ms-excel', 
    'ppt' => 'application/vnd.ms-powerpoint', 
    'wbxml' => 'application/vnd.wap.wbxml', 
    'wmlc' => 'application/vnd.wap.wmlc', 
    'wmlsc' => 'application/vnd.wap.wmlscriptc', 
    'bcpio' => 'application/x-bcpio', 
    'vcd' => 'application/x-cdlink', 
    'pgn' => 'application/x-chess-pgn', 
    'cpio' => 'application/x-cpio', 
    'csh' => 'application/x-csh', 
    'dcr' => 'application/x-director', 
    'dir' => 'application/x-director', 
    'dxr' => 'application/x-director', 
    'dvi' => 'application/x-dvi', 
    'spl' => 'application/x-futuresplash', 
    'gtar' => 'application/x-gtar', 
    'hdf' => 'application/x-hdf', 
    'js' => 'application/x-javascript', 
    'skp' => 'application/x-koan', 
    'skd' => 'application/x-koan', 
    'skt' => 'application/x-koan', 
    'skm' => 'application/x-koan', 
    'latex' => 'application/x-latex', 
    'nc' => 'application/x-netcdf', 
    'cdf' => 'application/x-netcdf', 
    'sh' => 'application/x-sh', 
    'shar' => 'application/x-shar', 
    'swf' => 'application/x-shockwave-flash', 
    'sit' => 'application/x-stuffit', 
    'sv4cpio' => 'application/x-sv4cpio', 
    'sv4crc' => 'application/x-sv4crc', 
    'tar' => 'application/x-tar', 
    'tcl' => 'application/x-tcl', 
    'tex' => 'application/x-tex', 
    'texinfo' => 'application/x-texinfo', 
    'texi' => 'application/x-texinfo', 
    't' => 'application/x-troff', 
    'tr' => 'application/x-troff', 
    'roff' => 'application/x-troff', 
    'man' => 'application/x-troff-man', 
    'me' => 'application/x-troff-me', 
    'ms' => 'application/x-troff-ms', 
    'ustar' => 'application/x-ustar', 
    'src' => 'application/x-wais-source', 
    'xhtml' => 'application/xhtml+xml', 
    'xht' => 'application/xhtml+xml', 
    'zip' => 'application/zip', 
    'au' => 'audio/basic', 
    'snd' => 'audio/basic', 
    'mid' => 'audio/midi', 
    'midi' => 'audio/midi', 
    'kar' => 'audio/midi', 
    'mpga' => 'audio/mpeg', 
    'mp2' => 'audio/mpeg', 
    'mp3' => 'audio/mpeg', 
    'aif' => 'audio/x-aiff', 
    'aiff' => 'audio/x-aiff', 
    'aifc' => 'audio/x-aiff', 
    'm3u' => 'audio/x-mpegurl', 
    'ram' => 'audio/x-pn-realaudio', 
    'rm' => 'audio/x-pn-realaudio', 
    'rpm' => 'audio/x-pn-realaudio-plugin', 
    'ra' => 'audio/x-realaudio', 
    'wav' => 'audio/x-wav', 
    'pdb' => 'chemical/x-pdb', 
    'xyz' => 'chemical/x-xyz', 
    'bmp' => 'image/bmp', 
    'gif' => 'image/gif', 
    'ief' => 'image/ief', 
    'jpeg' => 'image/jpeg', 
    'jpg' => 'image/jpeg', 
    'jpe' => 'image/jpeg', 
    'png' => 'image/png', 
    'tiff' => 'image/tiff', 
    'tif' => 'image/tiff', 
    'djvu' => 'image/vnd.djvu', 
    'djv' => 'image/vnd.djvu', 
    'wbmp' => 'image/vnd.wap.wbmp', 
    'ras' => 'image/x-cmu-raster', 
    'pnm' => 'image/x-portable-anymap', 
    'pbm' => 'image/x-portable-bitmap', 
    'pgm' => 'image/x-portable-graymap', 
    'ppm' => 'image/x-portable-pixmap', 
    'rgb' => 'image/x-rgb', 
    'xbm' => 'image/x-xbitmap', 
    'xpm' => 'image/x-xpixmap', 
    'xwd' => 'image/x-xwindowdump', 
    'igs' => 'model/iges', 
    'iges' => 'model/iges', 
    'msh' => 'model/mesh', 
    'mesh' => 'model/mesh', 
    'silo' => 'model/mesh', 
    'wrl' => 'model/vrml', 
    'vrml' => 'model/vrml', 
    'css' => 'text/css', 
    'html' => 'text/html', 
    'htm' => 'text/html', 
    'asc' => 'text/plain', 
    'txt' => 'text/plain', 
    'rtx' => 'text/richtext', 
    'rtf' => 'text/rtf', 
    'sgml' => 'text/sgml', 
    'sgm' => 'text/sgml', 
    'tsv' => 'text/tab-separated-values', 
    'wml' => 'text/vnd.wap.wml', 
    'wmls' => 'text/vnd.wap.wmlscript', 
    'etx' => 'text/x-setext', 
    'xsl' => 'text/xml', 
    'xml' => 'text/xml', 
    'mpeg' => 'video/mpeg', 
    'mpg' => 'video/mpeg', 
    'mpe' => 'video/mpeg', 
    'qt' => 'video/quicktime', 
    'mov' => 'video/quicktime', 
    'mxu' => 'video/vnd.mpegurl', 
    'avi' => 'video/x-msvideo', 
    'movie' => 'video/x-sgi-movie', 
    'ice' => 'x-conference/x-cooltalk' 
  • 相关阅读:
    程序员的自我修养(序)-量子
    我的IT生活-量子
    量子地图
    再出发
    新的一年快开始了,学点新东西吧,从React开始(一)
    ECMAScript 6 Features 中文版
    必须清零
    彩印网的第一阶段即将收官
    终于感觉掌握了一门重要的技术
    程序员的命运之轮
  • 原文地址:https://www.cnblogs.com/wlj928449657/p/3714342.html
Copyright © 2011-2022 走看看