自由色彩,无限魅力:www.zyml.net

C#实现大文件分块发送到客户端

上一篇 / 下一篇  2008-02-04 15:34:46

查看( 11 ) / 评论( 0 )
  
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  = "DownloadFileName";
// 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.ContentType = "application/octet-stream";
  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();
  }
}

TAG:

我来说两句

(可选)

日历

« 2009-01-02  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 104072
  • 日志数: 662
  • 图片数: 22
  • 影音数: 169
  • 商品数: 44
  • 文件数: 344
  • 书签数: 20
  • 建立时间: 2007-04-27
  • 更新时间: 2008-10-09

RSS订阅

Open Toolbar