public static HttpRequestRange New(HttpRequest request)
        {
            var rangeStr = request.Headers["Range"];

            if (string.IsNullOrEmpty(rangeStr))
            {
                return(HttpRequestRange.Empty);
            }
            rangeStr = rangeStr.Replace("bytes=", string.Empty);
            if (string.IsNullOrEmpty(rangeStr))
            {
                return(HttpRequestRange.Empty);
            }
            HttpRequestRange range = new HttpRequestRange();

            if (rangeStr.IndexOf('-') == -1)
            {
                //Range bytes=1000 传输最后1000个字节。
                range.LastBytes = int.Parse(rangeStr);
            }
            else
            {
                //bytes=0- 或者 bytes=1000-2000
                var temp = rangeStr.Split('-');
                range.StartIndex = long.Parse(temp[0]);
                range.EndIndex   = (temp.Length > 1 && !string.IsNullOrEmpty(temp[1])) ? long.Parse(temp[1]) : -1;
            }
            return(range);
        }
        protected override void ProcessGET()
        {
            var range = HttpRequestRange.New(this.Request);

            if (!range.IsEmpty())
            {
                var  size   = GetFileSize();
                long offset = 0;
                long count  = 0;
                //分段读取
                range.Process(this.Response, size, out offset, out count);

                byte[] buffer = ReadFileBuffer(offset, (int)count);
                this.Response.BinaryWrite(buffer);
                this.Response.Flush();
            }
            else
            {
                //普通文件
                var  size       = GetFileSize();
                int  bufferSize = GetBufferSize(size);
                long offset     = 0;
                while (offset < size)
                {
                    byte[] buffer = ReadFileBuffer(offset, bufferSize);
                    this.Response.BinaryWrite(buffer);
                    this.Response.Flush();
                    offset += buffer.Length;
                }
            }
        }