c#批量上传图片到服务器示例分享


当然,我可以为你提供一个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`),你可能需要根据你的应用需求添加更详细的错误处理。