@kir_cipher

Как правильно аплоадить файл на сервер ВК через VK API (C#)?

Доброго дня всем!
Спустя полгода решил переписать своего старенького ВК-бота. В процессе этого обнаружил, что они изменили правила аплоада файлов на сервер и просто webClient.UploadFile() больше не прокатывает.
"Передайте файл на адрес upload_url, полученный в предыдущем пункте, сформировав POST-запрос с полем file. Это поле должно содержать файл в формате multipart/form-data." - вот, что они ныне просят. С POST-запросами я достаточно редко сталкиваюсь, так что не совсем понимаю, как туда запихнуть данные о файле. Помогите, пожалуйста, верно сформировать этот самый post-запрос

Делаю так, подскажите, что тут неверно, ибо Result возвращается пустой строкой!
var uri = new Uri(uploadURL);
                var content = new MultipartFormDataContent();
                var t = new StreamContent(File.OpenRead(path));
                t.Headers.ContentType
                    = new System.Net.Http.Headers.MediaTypeHeaderValue("multipart/form-data");
                content.Add(t, "file", "testiks.jpg");
                var response = PostBuffer(uri, content);
                response.Wait();

Метод PostBuffer:
private async Task<string> PostBuffer(Uri uploadURL, MultipartFormDataContent content)
        {
            var baseAddress = uploadURL;
            var cookieContainer = new CookieContainer();
            using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
            using (var client = new HttpClient(handler) { BaseAddress = baseAddress })
            {
                client.DefaultRequestHeaders.Add("User-Agent", "Mozilla 228");
                var response = await client.PostAsync(uploadURL, content);
                return await response.Content.ReadAsStringAsync();
            }
        }
  • Вопрос задан
  • 672 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rou1997
@Rou1997
Стандартный multipart/form-data, ничего особенного, можете тестировать на своем сервере, на PHP набросать или еще чем-то.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы