Как можно опубликовать несколько двоичных файлов за одну операцию HTTP POST с помощью C # httpclient? Кажется, я не могу найти информацию о том, как работать с httpcontent таким образом - просто дважды выполняя postASync с данными потока?

0
JosephA 10 Окт 2014 в 00:44

2 ответа

Лучший ответ

Еще немного покопался и поэкспериментировал, и наконец нашел то, что кажется рабочим решением. Я пробовал это на тестовом сервере с некоторыми изображениями на HD - оба отправили, оба работали. С двумя примерами потоков.

        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
JosephA 10 Окт 2014 в 13:38

Это будет зависеть от реализации API, в который вы отправляете свои файлы, но обычно, если несколько файлов отправляются в одном запросе POST, он отправляется как multipart / form-data. Взгляните на это сообщение для отправки данных multipart / form через HttpClient.

0
Community 23 Май 2017 в 12:24