当我们要想要将一个大文件推给(http)客户端时,由于文件太大我们需要分块传输,下面举例说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | using ( var ms = new MemeryStream()) { //100K 每次读取文件,只读取100K,这样可以缓解服务器的压力 const long ChunkSize = 102400; byte [] buffer = new byte [ChunkSize]; //获取下载的文件总大小 long dataLengthToRead = ms.Length; while (dataLengthToRead > 0 && Response.IsClientConnected) { //读取的大小 int lengthRead = ms.Read(buffer, 0, Convert.ToInt32(ChunkSize)); //向http流写入数据 Response.OutputStream.Write(buffer, 0, lengthRead); Response.Flush(); dataLengthToRead = dataLengthToRead - lengthRead; } } |