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

时间:2014-10-09 20:44:34

标签: c# httpclient

如何使用C#httpclient在单个http POST操作中发布多个二进制文件?我似乎无法找到有关如何以这种方式处理httpcontent的信息 - 只需对流数据执行两次postASync?

2 个答案:

答案 0 :(得分:1)

挖掘更多并进行实验,最后找到了似乎是一个有效的解决方案。我在测试服务器上尝试了这个,高清上有一些图像 - 两者都发送了,都有效。有两个流示例。

        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();
        }

答案 1 :(得分:0)

它将取决于您发送文件的API的实现,但通常如果在单个POST请求中发送多个文件,则它将作为multipart / form-data发送。看看这个post for sending multipart/form-data through HttpClient