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' 

 

你可能感兴趣的:(asp.net)