Задать вопрос
@ed_milson
Я

Как передать файл с помощью multipart в php( фото от бота для Телеграмма)?

Здравствуйте. Уже весь день пытаюсь сделать но не идет ни как. В телеграмм(https://telegram.org) пишу бота. И там фотографию принимает API только как "multipart/form-data" а нужно отправить фото которое по адресу
http://i.imgur.com/ea9PB3H.png
писал:
$url   = "https://api.telegram.org/bot124163913:AAHQ-axveIAcY24uT8ZlYgEW1jOmFqRmXXE/sendPhoto";
$post_fields = array('chat_id'   => $chat_id,
    'photo'     => file_get_contents("http://i.imgur.com/ea9PB3H.png ")
// 'photo'     => "http://i.imgur.com/ea9PB3H.png "
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "Content-Type:multipart/form-data"
));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
$output = curl_exec($ch);

Может подскажете рабочий вариант?
PS. Отправка через форму
<form action="https://api.telegram.org/bot124163913:AAHQ-axveIAcY24uT8ZlYgEW1jOmFqRmXXE/sendPhoto" method="post" enctype="multipart/form-data">
        <input type="text" name="chat_id" value="182347970">
        <input type="file" name="photo">
        <input type="submit">
    </form>

работает отлично
UPD
function post($url, $parametros, $ch)
{
    curl_setopt ($ch, CURLOPT_URL,$url);
    curl_setopt ($ch, CURLOPT_POST, 1);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $parametros);
    $result= curl_exec($ch);
    return $result;
}
    $ch = curl_init();
    $data = array(
        'chat_id' => '182347970',
        'photo' => 'http://i.imgur.com/ea9PB3H.png '
    );
    $data2 = http_build_query($data);
    echo post ("https://api.telegram.org/bot124163913:AAHQ-axveIAcY24uT8ZlYgEW1jOmFqRmXXE/sendPhoto", $data2, $ch);
тоже не работает
ошибка
{"ok":false,"error_code":400,"description":"Bad Request: Wrong persistent file_id specified: contains wrong characters or has wrong length"}
  • Вопрос задан
  • 4498 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@vylegzhanin
1) Сохраняй картинку http://i.imgur.com/ea9PB3H.png локально, например, в папку tmp.
2) Боту отправляй локальный файл.
3) Чисти папку tmp после отправки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽