?????????????????????????????ASP.NET???????????????????????????????????????????????????????????????????????????????????????ASP.NET????????????????·????????
?????????????????????????????????????????????????????????????????????????????????????????????ο????′????????????????
????using System;
????namespace WebApplication1
????{
????public partial class DownloadFile:System.Web.UI.Page
????{
????protected void Page_Load(object sender??EventArgs e)
????{
????System.IO.Stream iStream=null;
????//Buffer to read 10K bytes in chunk:
????byte[]buffer=new Byte[10000];
????//Length of the file:
????int length;
????//Total bytes to read.
????long dataToRead;
????//Identify the file to download including its path.
????string filepath=Server.MapPath("/")+"./Files/TextFile1.txt";
????//Identify the file name.
????string filename=System.IO.Path.GetFileName(filepath);
????try
????{
????//Open the file.
????iStream=new System.IO.FileStream(filepath??System.IO.FileMode.Open??
????System.IO.FileAccess.Read??System.IO.FileShare.Read);
????//Total bytes to read.
????dataToRead=iStream.Length;
????Response.Clear();
????Response.ClearHeaders();
????Response.ClearContent();
????Response.ContentType="text/plain";//Set the file type
????Response.AddHeader("Content-Length"??dataToRead.ToString());
????Response.AddHeader("Content-Disposition"??"attachment;filename="+filename);
????//Read the bytes.
????while(dataToRead>0)
????{
????//Verify that the client is connected.
????if(Response.IsClientConnected)
????{
????//Read the data in buffer.
????length=iStream.Read(buffer??0??10000);
????//Write the data to the current output stream.
????Response.OutputStream.Write(buffer??0??length);
????//Flush the data to the HTML output.
????Response.Flush();
????buffer=new Byte[10000];
????dataToRead=dataToRead-length;
????}
????else
????{
????//Prevent infinite loop if user disconnects
????dataToRead=-1;
????}
????}
????}
????catch(Exception ex)
????{
????//Trap the error??if any.
????Response.Write("Error:"+ex.Message);
????}
????finally
????{
????if(iStream!=null)
????{
????//Close the file.
????iStream.Close();
????}
????Response.End();
????}
????}
????}
????}
?????????????????????
????1.?????????С?????????????????????????????????????Щ?????
????2.?????????????????????Response.ContentType?????ο?OSChina????????????????????????????????http://tool.oschina.net/commons??
????3.?????д??response???????Response.Flush()
????4.??????????????????Response.IsClientConnected????ж????????????緢?????????????????????????????????????????????????????????????
????5.??????????????????Response.End()???????????????????????