Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/224: Рейтинг темы: голосов - 224, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 15
.NET 4.x

Как отправить файл в телеграм без использования библиотеки (API)

27.08.2019, 22:39. Показов 43953. Ответов 14

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Такой вопрос:
Code
1
https://api.telegram.org/botTOKEN/sendDocument?chat_id=ChatID&document=Как сюда запихнуть файл?&parse_mode=html
Пробовал по всякому, но всё время одна и та же ошибка(400 Bad Request: there is no document in the request)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.08.2019, 22:39
Ответы с готовыми решениями:

Как отправить файл через контекстное меню по почте (без использования почтовой программы)
Все что описано в интернете - это с использованием почтовой программы. Но вот без нее, а через браузер mozilla и яндекс почту нигде не...

Как отправить данные формы в формате json БЕЗ использования javascript?
Как отправить данные формы в формате json БЕЗ использования javascript? Объясните плиз для чайников, или ссылочку хотя бы дайте где всё...

Как реализовать стек из Stl в программе без использования библиотеки
Мне нужно реализовать стек из Stl, без использования библиотеки. Я немного не понимаю, как это сделать). У меня есть код Вот задание,...

14
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
27.08.2019, 23:31
https://core.telegram.org/bots/api#senddocument

File to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data.
0
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 15
28.08.2019, 07:37  [ТС]
Как в C# реализовать отправку с помощью этого multipart/form-data? Какой должен быть параметр document при запросе?
0
Эксперт .NET
 Аватар для Usaga
14299 / 9384 / 1353
Регистрация: 21.01.2016
Сообщений: 35,380
28.08.2019, 11:04
kotre54, воть.
0
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 15
28.08.2019, 11:28  [ТС]
Code
1
https://api.telegram.org/botTOKEN/sendDocument?chat_id=ChatID&document=Что писать сюда?&parse_mode=html
0
Эксперт .NET
 Аватар для Usaga
14299 / 9384 / 1353
Регистрация: 21.01.2016
Сообщений: 35,380
28.08.2019, 13:13
kotre54, туда писать ничего. По ссылке пример есть. Ещё, раз такие вопросы задаёте, загуглите, что такое multipart/form-data. Тогда прояснится всё.
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
28.08.2019, 13:16
kotre54, поэкспериментировать религия не позволяет?
У каждого блока form-data есть name и, опционально, filename. Это было бы трудно не заметить, если бы вы удосужились последовать совету Usaga и посмотреть примеры с той темы на stackoverflow.
0
0 / 0 / 0
Регистрация: 17.10.2021
Сообщений: 2
08.11.2021, 21:32
Необходимо отправить Post запрос на "https://api.telegram.org/botTOKEN/sendDocument".
Пример:
POST /upload HTTP/1.1
Content-Type: multipart/form-data;
Content-Length: 16737
Origin: http://example.com
Pragma: no-cache
Cache-Control: no-cache
//Первые 6 строчек заполняются как правило автоматически, их может быть больше.

-----------------------------(так называемы bounder заполняется как правило автоматически)
Content-Disposition: multipart/form-data; name="chat_id" //здесь самое главное просто прописать текстом "chat_id"
//а в теле уже прописать ваш %chatId полученный при получении сообщения от клиента
-----------------------------(так называемы bounder заполняется как правило автоматически)
Content-Disposition: form-data; name="document"; filename="%ИмяФайла%" //Необходимо прописать "document". Подставить ваше %ИмяФайла%
//а в теле уже отправить сам документ (бинарный поток данных)
0
0 / 0 / 0
Регистрация: 10.06.2020
Сообщений: 6
02.02.2022, 21:02
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static async Task UploadToTelegram(byte[] image, string token, string chatid)
    {
        string url = "https://api.telegram.org/bot" + token + "/sendDocument?chat_id=" + chatid;
        using (var client = new System.Net.Http.HttpClient())
        {
            using (var content =
                new System.Net.Http.MultipartFormDataContent("Upload----" + DateTime.Now.ToString(System.Globalization.CultureInfo.InvariantCulture)))
            {
                content.Add(new System.Net.Http.StreamContent(new MemoryStream(image)), "document", "123");
                using (
                   var message =
                   await client.PostAsync(url, content))
                {
                    var input = await message.Content.ReadAsStringAsync();
                }
            }
        }
    }
для того чтобы передать файл нужно его конвертировать в массив байтов, можно использовать метод
C#
1
byte[] bData = File.ReadAllBytes("путь к файлу");
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
02.02.2022, 21:08
Цитата Сообщение от Babloescobar Посмотреть сообщение
для того чтобы передать файл нужно его конвертировать в массив байтов
Зачем если можно передать любой Stream (FileStream, MemoryStream, NetworkStream и т.д.)?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static async Task UploadToTelegram(Stream file, string token, string chatid)
    {
        string url = "https://api.telegram.org/bot" + token + "/sendDocument?chat_id=" + chatid;
        using (var client = new System.Net.Http.HttpClient())
        {
            using (var content = new System.Net.Http.MultipartFormDataContent("Upload----" + DateTime.Now.ToString(System.Globalization.CultureInfo.InvariantCulture)))
            {
                content.Add(new System.Net.Http.StreamContent(file, "document", "123");
                using (var message = await client.PostAsync(url, content))
                {
                    var input = await message.Content.ReadAsStringAsync();
                }
            }
        }
    }
0
0 / 0 / 0
Регистрация: 10.06.2020
Сообщений: 6
02.02.2022, 21:57
Цитата Сообщение от Someone007 Посмотреть сообщение
Зачем если можно передать любой Stream (FileStream, MemoryStream, NetworkStream и т.д.)?
а разница большая?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
02.02.2022, 22:39
Цитата Сообщение от Babloescobar Посмотреть сообщение
а разница большая?
В некоторых случаях да, большая. Лишнее выделение памяти под массив создает огромную нагрузку на GC если этот метод будет вызываться миллионы раз...
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
03.02.2022, 02:55
я за минимализм
C#
1
2
3
4
using Flurl.Http;
var result = await $"https://api.telegram.org/bot{token}/sendDocument?chat_id={chatid}"
                .PostMultipartAsync((body) => body.AddFile("name", "path"))
                .ReceiveString();
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
06.02.2022, 16:20
sau, Если на каждый чих подключать стороннюю приблуду то рано или поздно можно столкнуться с проблемой node_modules =)
0
Эксперт .NET
 Аватар для Usaga
14299 / 9384 / 1353
Регистрация: 21.01.2016
Сообщений: 35,380
06.02.2022, 17:10
nicolas2008, вот хз.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.02.2022, 17:10
Помогаю со студенческими работами здесь

Как сделать замену слова в строке без использования функций библиотеки string?
вводится строка => вводится слово, которое нужно заменить(если оно есть в строке)=> вводится слово на которое нужно заменить

VK API подключение библиотеки и пример использования
Здравствуйте, скажите, пожалуйста как подключить vk api. Откуда брать библиотеку? Как подключить браузер? И, если не сложно, можно...

Как отправить сообщение в телеграм?
Всем привет. Как отправить сообщение в телеграм, если данные на сайте через 1 час меняются? Если у кого нибудь есть похожий код, скиньте...

Как настроить Qt Creator для разработки на Win API без библиотеки Qt
Скачал установил Qt Creator 2.6.0 for Windows (51 MB) хочу чтобы он дружил с qmake.exe и msvc или mingw. Что мне нужно ещё скачать,...

Как отправить фото рандомно в Телеграм?
Нужно чтоб Телеграм бот отправил мне рандом картинку, есть команда отправляющая просто картинку по ссылке, можно ли как-то рандомизировать...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru