当然,我可以为你提供一个C#中使用`HttpClient`来批量上传图片到服务器的示例。这个示例将展示如何构建一个简单的客户端应用,它使用`MultipartFormDataContent`来构造多部分表单数据,并发送POST请求到服务器。
请注意,这里假设你有一个可以接收多部分表单数据的服务器端点。
using System;
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
string baseUrl = "http://yourserver.com/api/upload"; // 替换为你的服务器地址
string[] imagePaths = { "path/to/image1.jpg", "path/to/image2.jpg" }; // 图片路径数组
using (var httpClient = new HttpClient())
{
foreach (var imagePath in imagePaths)
{
using (var content = new MultipartFormDataContent())
{
var fileContent = new ByteArrayContent(File.ReadAllBytes(imagePath));
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg"); // 根据图片类型设置
content.Add(fileContent, "file", Path.GetFileName(imagePath)); // "file"是服务器端接收文件的字段名
// 可以添加更多的表单数据
// content.Add(new StringContent("extra info"), "extraInfo");
try
{
var response = await httpClient.PostAsync(baseUrl, content);
if (response.IsSuccessStatusCode)
{
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Success: {responseBody}");
}
else
{
Console.WriteLine($"Error: {response.StatusCode}");
}
}
catch (HttpRequestException e)
{
Console.WriteLine("\nException Caught!");
Console.WriteLine("Message :{0} ", e.Message);
}
}
}
}
}
}
**注意事项**:
1. 替换`baseUrl`为你的服务器地址。
2. 替换`imagePaths`数组中的图片路径为你的实际图片路径。
3. 根据你的图片类型,可能需要调整`MediaTypeHeaderValue.Parse`中的MIME类型(例如,对于PNG图片,使用`image/png`)。
4. 服务器端需要能够处理多部分表单数据,并期望在请求中接收名为"file"的文件字段(或你设置的任何名称)。
5. 这个示例中,每个图片都是单独上传的。如果你需要在一个请求中上传多个文件,你可能需要修改服务器端点以接受多个文件,并在客户端构建相应的表单数据。
6. 这个示例没有包含错误处理逻辑(除了捕获`HttpRequestException`),你可能需要根据你的应用需求添加更详细的错误处理。