首页 > 代码库 > Asp.Net 下载文件的几种方式

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