2

Добрый день. Какой вид имеет полный текст http-запроса при отправке изображения с диска или оперативной памяти компьютера? Сама строка запроса должна выглядеть так:

https://api.telegram.org/bot<token>/sendPhoto?chat_id=<chat_id>&photo=<photo>

Это работает если указывать на месте <photo> URL-адрес изображения в интернете или идентификатор сохраненного в telegram изображения. Для загрузки изображений в официальной документации сказано, что требуется использовать multipart/form-data:

Post the file using multipart/form-data in the usual way that files are uploaded via the browser. 10 MB max size for photos, 50 MB for other files.

Насколько я понимаю - это означает то, что нужно указать значение multipart/form-data для заголовка Content-Type в http-запросе, но при этом непонятно куда тогда нужно поместить саму строку/массив байт представляющий изображение. Отыскать полный текст запроса мне нигде не удалось - возможно кто-то подскажет как правильно составить запрос на отправку изображения/файла.

edem
  • 5,970

1 Answers1

2

Ваш запрос в формате multipart/form-data будет выглядеть примерно следующим образом.

POST /botID:TOKEN/sendPhoto HTTP/1.1
Host: api.telegram.org
User-Agent: curl
Content-Type: multipart/form-data; boundary=Asrf456BGe4h
Content-Length: (суммарный объём, включая дочерние заголовки)
Connection: keep-alive
Keep-Alive: 300
(пустая строка)
(отсутствующая преамбула)
--Asrf456BGe4h
Content-Disposition: form-data; name="chat_id"
(пустая строка)
123456
--Asrf456BGe4h
Content-Disposition: form-data; name="photo"; filename="horror-photo-1.jpg"
Content-Type: image/jpeg
(пустая строка)
(двоичное содержимое вашей фотографии)
--Asrf456BGe4h
(отсутствующий эпилог - пустая строка)

Это адаптированный пример из Википедии.

mymedia
  • 8,602