Форум программистов, компьютерный форум, киберфорум
C#: API, боты
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 15.09.2015
Сообщений: 30
1

В боте не могу реализовать посыл картинок

09.05.2020, 00:54. Показов 475. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вконтакте, да и в Телеграм фото отсылаются с помощью MIME/FORM-DATA. Перелопатив интернет не нашёл рабочего варианта, в основ ном всё на python, вот варианты которые я нашёл (использую библиотеку xNET
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static string POSTtoServerMIME(string upload_url,string nameFile)
        {
            var data = new HttpRequest();
            RequestParams reqParams = new RequestParams();
            byte[] file_bytes = FileBin(nameFile);
            MultipartFormDataContent form = new MultipartFormDataContent();
            //form.Add(new ByteArrayContent(file_bytes, 0, file_bytes.Length), "profile_pic", "3px.jpg");
            form.Add(new ByteArrayContent(System.IO.File.ReadAllBytes(nameFile)), "profile_pic", "3px.jpg");
            reqParams["file1"] = form;
            string response = data.Post(upload_url, reqParams).ToString();
            return response;
        }
 
        static byte[] FileBin(string fullpath)
        {
            FileStream fs = new FileStream(fullpath, FileMode.Open, FileAccess.Read);
            byte[] data = new byte[fs.Length];
            fs.Read(data, 0,data.Length);
            fs.Close();
            return data;
        }
но при загрузке response выдает поле photo пустым, значит некорректно загрузил я MIME

Второй вариант с помощью WebClient, но так как с ним я не работал, не могу понять почему результит в Bytes, где вытащить тот самый response как на xNET
C#
1
2
3
4
5
6
7
8
9
10
11
12
        
public static void UploadMultipart(byte[] file, string filename, string contentType, string url)
        {
            var webClient = new WebClient();
            string boundary = "------------------------" + DateTime.Now.Ticks.ToString("x");
            webClient.Headers.Add("Content-Type", "multipart/form-data; boundary=" + boundary);
            var fileData = webClient.Encoding.GetString(file);
            var package = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"file\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n{3}\r\n--{0}--\r\n", boundary, filename, contentType, fileData);
            var nfile = webClient.Encoding.GetBytes(package);
            byte[] resp = webClient.UploadData(url, "POST", nfile);
 
        }
В общем помогите найти этот нюанс, как грузить MIME в C#

Добавлено через 21 минуту
Оказалось проще чем я думал
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
            
        public static string UploadMultipart(byte[] file, string filename, string contentType, string url)
        {
            var webClient = new WebClient();
            string boundary = "------------------------" + DateTime.Now.Ticks.ToString("x");
            webClient.Headers.Add("Content-Type", "multipart/form-data; boundary=" + boundary);
            var fileData = webClient.Encoding.GetString(file);
            var package = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"file\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n{3}\r\n--{0}--\r\n", boundary, filename, contentType, fileData);
            //var nfile = webClient.Encoding.GetBytes(package);
            //byte[] resp = webClient.UploadData(url, "POST", nfile);
            string response = webClient.UploadString(url, "POST", package);
            return response;
        }
Так это работает. Тогда почему первый вариант(с xNET) не работал?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2020, 00:54
Ответы с готовыми решениями:

Посыл Perform кнопке и PressedImageIndex
Hi. В программе имеется N кнопок типа TButton, у каждой имеется св-во ImageIndex и...

Посыл клавиш в активное окно (DirectX app)
Есть игра, хочу сделать что б в ней нажималась кнопка в определенное время. Перепробовал:...

Посыл http запроса get при наличии сертификата самоподписанного ssl
Написал прогу с помощью WinInet и запросы GET для самоподписанных страниц не работают. Для...

Реализовать галерею картинок
Подскажите какая функуция jquery поможет создать подобную галерею, урок или наглядный пример....

0
09.05.2020, 00:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2020, 00:54
Помогаю со студенческими работами здесь

Как реализовать смену картинок
Мне, например, нужно установить разный фон на кнопку в зависимости от определенного условия....

Реализовать взаимодействие Tinymce и загрузчика картинок
Ребят всем привет! Интегрировал визуальный редактор Tinymce в свой блог на asp mvc4, теперь...

Как реализовать такой слайдер картинок?
Доброго вечера. Подскажите, как реализовать такой вот слайдер?)

Как реализовать склеивание двух картинок?
Есть сервис для наложения водного знака, при нажатии кнопки скачать, через аякс на сервер...

Как лучше реализовать привязку картинок к таблицам БД
Очень долго парился с этой темой. Пришел к выводу, что нужно сделать отдельную таблицу для...

Доработка галереи в HTML - реализовать исчезновение картинок
Здравствуйте, я не разбираюсь в HTML ,но мне нужна была галерея, два дня сидела, и подбирала...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru