.net core断点续传

原文链接:https://www.cnblogs.com/juanheqiao/p/14204790.html

先创建个类:

    public class ResFileStream: FileStream
    {
        public ResFileStream(string path, FileMode mode, FileAccess access) : base(path, mode, access)
        {
        }

        /// <param name="array"></param>
        /// <param name="offset">偏移量</param>
        /// <param name="count">读取的最大字节数</param>
        /// <returns></returns>
        public override int Read(byte[] array, int offset, int count)
        {
            // 此处可以限制下载速度
            //count = 256;
            //Thread.Sleep(10);
            return base.Read(array, offset, count);
        }
    }

再创建个action

        /// <summary>
        /// 文件下载 断点续传 视频加载
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetFile()
        {
            var filePath = @"F:\WeChatFiles.zip"; //文件所在路径
            var name = @"WeChatFiles.zip"; //文件名
            ResFileStream fs = new ResFileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
            var type = new System.Net.Http.Headers.MediaTypeHeaderValue("application/zip").MediaType;
            return File(fs, contentType: type, name, enableRangeProcessing: true); //enableRangeProcessing 是否启动断点续传
        }

 

所谓断点续传,也就是要从文件已经下载的地方开始继续下载。所以在客户端浏览器传给 Web 服务器的时候要多加一条信息,如果我们在已经暂停的下载再点继续的话,传递请求信息给 Web 服务器,要求从 2000070 字节开始。

GET /down.zip HTTP/1.0
User-Agent: NetFox
RANGE: bytes=2000070-
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

 

posted @ 2022-07-25 10:08  水墨晨诗  阅读(346)  评论(1编辑  收藏  举报