首页 > 开发 > 综合 > 正文

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

2024-07-21 02:26:31
字体:
来源:转载
供稿:网友

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();
  }
 }
 

 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表