C#获取URL下载文件保存到本地并获取文件名
时间: 2024-12-25 16:37:18 浏览: 18
在C#中,你可以使用`HttpClient`类来从URL下载文件,并通过响应头信息获取文件名。这里是一个简单的示例:
```csharp
using System;
using System.IO;
using System.Net.Http;
public async Task DownloadFileAsync(string url, string destinationFolder)
{
try
{
// 创建HttpClient实例
using (var httpClient = new HttpClient())
{
// 发送GET请求
HttpResponseMessage response = await httpClient.GetAsync(url);
// 检查请求是否成功
if (response.IsSuccessStatusCode)
{
// 获取响应的内容
byte[] fileContent = await response.Content.ReadAsByteArrayAsync();
// 分析响应头获取文件名
string fileName = Path.GetFileName(response.RequestMessage.Headers.ContentDisposition.FileName);
// 定义完整的文件路径
string filePath = Path.Combine(destinationFolder, fileName);
// 将文件内容写入本地
using (FileStream fs = File.Create(filePath))
{
fs.Write(fileContent, 0, fileContent.Length);
}
Console.WriteLine($"文件已成功下载到 {filePath}.");
}
else
{
Console.WriteLine($"下载失败,状态码: {response.StatusCode}");
}
}
}
catch (Exception ex)
{
Console.WriteLine($"下载过程中发生错误: {ex.Message}");
}
}
// 调用函数并传入URL和目标文件夹路径
DownloadFileAsync("http://example.com/file.zip", @"C:\Downloads");
```
在这个例子中,你需要替换`url`变量为你想下载的实际URL。运行这个函数后,它会将文件保存到指定的`destinationFolder`。
阅读全文