管理杂谈OA答疑ERP答疑教程搜索

C# http断点续传下载源码


在C#中实现HTTP断点续传通常需要客户端支持Range请求头,以便请求下载文件的特定部分。以下是一个简单的示例,展示了如何使用HttpClient发送Range请求以实现断点续传:

using System;

using System.IO;

using System.Net.Http;

using System.Threading.Tasks;

 

class Program

{

    static async Task Main(string[] args)

    {

        string url = "http://example.com/large-file.zip"; // 替换为你要下载的文件URL

        string destinationPath = "downloaded-file.zip"; // 替换为你的目标文件路径

 

        using (HttpClient httpClient = new HttpClient())

        {

            // 获取文件大小

            HttpResponseMessage response = await httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead);

            response.EnsureSuccessStatusCode();

            long fileLength = response.Content.Headers.ContentLength.Value;

 

            // 打开文件用于追加写入

            using (FileStream fileStream = new FileStream(destinationPath, FileMode.OpenOrCreate, FileAccess.Write))

            {

                // 定位到文件末尾

                fileStream.Seek(0, SeekOrigin.End);

 

                // 设置Range头部,从文件末尾开始

                HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);

                request.Headers.Range = new RangeHeaderValue(fileStream.Length, fileLength - 1);

 

                // 发送Range请求

                response = await httpClient.SendAsync(request);

                response.EnsureSuccessStatusCode();

 

                // 将响应内容写入文件

                await response.Content.CopyToAsync(fileStream);

            }

        }

    }

}

这段代码首先通过HttpClient获取文件大小,然后打开目标文件用于追加写入。之后,它设置了Range头部,指定从文件当前长度开始下载,并将下载的内容写入文件。这样可以实现从上次中断的地方继续下载文件,实现断点续传。


提示:AI自动生成,仅供参考。


更多精彩文章浏览...
点击右上角图标分享到朋友圈
官方网站:http://www.clicksun.cn
咨询热线:400-186-1886
服务邮箱:service@clicksun.cn