C#中HTTPCLIENT怎么设置Content-Type 为multipart/form-data
时间: 2024-11-25 10:15:32 浏览: 4
在C#中,当你需要通过`HttpClient`发送`multipart/form-data`类型的表单数据时,你需要在请求中明确设置`Content-Type`头以及构造`HttpContent`实例来表示文件和其他键值对。下面是一个示例:
```csharp
using System.Net.Http;
using System.IO;
// 创建HttpClient实例
HttpClient client = new HttpClient();
// 设置Content-Type为multipart/form-data
MultipartFormDataContent formData = new MultipartFormDataContent();
formData.Add(new StringContent("key1", Encoding.UTF8, "text/plain")); // 文本键值对
// 添加二进制文件(假设你有一个名为"file.jpg"的本地文件)
string filePath = "path_to_your_file.jpg";
FileStream fileStream = File.OpenRead(filePath);
HttpContent fileContent = new StreamContent(fileStream);
fileContent.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
formData.Add(fileContent, "file", Path.GetFileName(filePath));
// 发送POST请求
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://your-api-url.com/upload")
{
Content = formData
};
try
{
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode(); // 检查响应状态码
// 处理响应...
}
catch (HttpRequestException ex)
{
// 处理网络或请求错误...
}
// 关闭流,释放资源
if (fileStream != null)
{
fileStream.Close();
}
```
在这个例子中,我们首先创建了一个`MultipartFormDataContent`容器,然后添加了文本键值对和文件作为`HttpContent`的一部分。最后,我们在`HttpRequestMessage`中设置了这个`Content`属性。
阅读全文