使用httpclient在单个POST中发布多个二进制文件

本文关键字:布多个 二进制文件 POST httpclient 单个 使用 | 更新日期: 2023-09-27 18:26:08

如何使用C#httpclient在单个httpPOST操作中发布多个二进制文件?我似乎找不到关于如何以这种方式处理httpcontent的信息——只需对流数据进行两次后ASync?

使用httpclient在单个POST中发布多个二进制文件

反复研究和试验,最终找到了一个可行的解决方案。我在一个测试服务器上尝试了这一点,其中一些图像是高清的——都发送了,都有效。有两个流示例。

        var client = new HttpClient();
        var stream3 = new FileStream("saved.jpg", FileMode.Open);
        var stream2 = new FileStream("saved2.jpg", FileMode.Open);
        var dic = new Dictionary<string, string>();
        dic.Add("Test1", "This was the first test.");
        var addy = "http://posttestserver.com/post.php";
        using (var content = new MultipartFormDataContent())
        {
            content.Add(new StreamContent(stream2), "s1", "Saved1.jpg");
            content.Add(new StreamContent(stream3), "s2", "Saved2.jpg");
            var response = await client.PostAsync(addy, content);
            response.EnsureSuccessStatusCode();
            string finalresults = await response.Content.ReadAsStringAsync();
        }

这将取决于将文件发送到的API的实现,但通常情况下,如果在单个POST请求中发送多个文件,则会将其作为多部分/form-data发送。看看这篇关于通过HttpClient发送多部分/表单数据的文章。