c# .net6 使用multipart/form-data POST上传文件, 文件标识名为"media",给出范例
时间: 2024-12-14 16:16:35 浏览: 32
在C# .NET Core 6中,如果你想通过`multipart/form-data` POST方式上传文件,比如文件名是"media",你需要使用HttpClient、MultipartFormDataContent以及File类来实现。下面是一个简单的范例:
```csharp
using System;
using System.Net.Http;
using System.IO;
public async Task UploadMedia(string apiUrl, string filePath)
{
// 创建一个HttpClient实例
using var client = new HttpClient();
// 创建MultipartFormDataContent
MultipartFormDataContent formData = new MultipartFormDataContent();
// 添加文件部分,指定名称为"media"
Stream fileStream = File.OpenRead(filePath);
HttpContent mediaPart = new StreamContent(fileStream);
mediaPart.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
mediaPart.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "media",
FileName = Path.GetFileName(filePath) // 获取文件的实际名字
};
formData.Add(mediaPart);
try
{
// 发送POST请求
HttpResponseMessage response = await client.PostAsync(apiUrl, formData);
if (response.IsSuccessStatusCode)
{
Console.WriteLine($"File uploaded successfully with status code {response.StatusCode}");
}
else
{
Console.WriteLine($"Upload failed with status code {response.StatusCode} and reason: {await response.Content.ReadAsStringAsync()}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error uploading file: {ex.Message}");
}
// 关闭所有资源
fileStream.Close();
}
// 调用示例
string apiUrl = "http://your-api-url.com/upload"; // 替换为你实际的API地址
string localFilePath = @"C:\path\to\file.jpg"; // 替换为你要上传的本地文件路径
UploadMedia(apiUrl, localFilePath);
```
在这个例子中,我们首先创建了HttpClient实例,然后构造了一个MultipartFormDataContent,添加了文件内容,并设置了它的名称为"media"。接着发送POST请求到指定的URL,如果成功,响应状态码会表示上传结果。
阅读全文