<ol><li>推荐使用 HttpClient 实现 C# 中的文件下载,支持异步与流式处理,适合大文件;2. 可通过自定义流包装器报告进度,并添加请求头和超时设置以提升兼容性与稳定性;3. 注意结合 try-catch 处理网络异常,确保下载可靠性。</li></ol>

在 C# 中从 URL 下载文件是一个常见需求,比如下载图片、文档或软件安装包。实现方式有多种,可根据具体场景选择合适的方法。以下是几种常用且可靠的实现方式。
说明: WebClient 封装了底层 HTTP 请求逻辑,使用 DownloadFile 方法可以直接将远程文件保存到本地。
示例代码:
using System.Net;<br><br>using (var client = new WebClient())<br>{<br> client.DownloadFile("https://example.com/file.pdf", @"C:\Downloads\file.pdf");<br>}优点是代码简洁,缺点是 WebClient 在 .NET Core/.NET 5+ 中已被标记为过时,推荐使用 HttpClient。
说明: 通过 GetByteArrayAsync 或 GetStreamAsync 获取数据流,再写入本地文件。
示例代码(异步下载):
using System.Net.Http;<br>using System.IO;<br><br>using var httpClient = new HttpClient();<br>var data = await httpClient.GetByteArrayAsync("https://example.com/image.jpg");<br>await File.WriteAllBytesAsync(@"C:\Downloads\image.jpg", data);如需处理大文件,避免内存溢出,可使用流式下载:
using var response = await httpClient.GetAsync("https://example.com/largefile.zip", HttpCompletionOption.ResponseHeadersRead);<br>using var stream = await response.Content.ReadAsStreamAsync();<br>using var fileStream = new FileStream(@"C:\Downloads\largefile.zip", FileMode.Create, FileAccess.Write);<br>await stream.CopyToAsync(fileStream);这种方式能有效控制内存使用,适合下载大文件。
建议: 虽然 HttpClient 本身不直接提供下载进度,但可通过自定义流包装器来实现进度报告。同时应包裹 try-catch 处理网络中断、404 错误等情况。
基本异常处理示例:
try<br>{<br> using var response = await httpClient.GetAsync(url);<br> if (response.IsSuccessStatusCode)<br> {<br> using var stream = await response.Content.ReadAsStreamAsync();<br> using var fileStream = new FileStream(filePath, FileMode.Create);<br> await stream.CopyToAsync(fileStream);<br> }<br> else<br> {<br> Console.WriteLine($"下载失败:{response.StatusCode}");<br> }<br>}<br>catch (HttpRequestException ex)<br>{<br> Console.WriteLine($"网络错误:{ex.Message}");<br>}说明: 可通过 HttpClient 的 DefaultRequestHeaders 添加必要信息,避免被服务器拒绝。
示例:
httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0");<br>httpClient.Timeout = TimeSpan.FromMinutes(10); // 设置超时基本上就这些。根据项目环境选择 WebClient 或 HttpClient,优先使用后者。注意处理异常、大文件流式写入和请求头配置,就能稳定实现 URL 文件下载功能。
以上就是C# 如何从 URL 下载文件_C# URL 文件下载实现指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号