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自动生成,仅供参考。 该文章在 2024/3/12 23:53:06 编辑过 |
关键字查询
相关文章
正在查询... |