@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"}
  • Вопрос задан
  • 4374 просмотра
Решения вопроса 1
@vylegzhanin
1) Сохраняй картинку http://i.imgur.com/ea9PB3H.png локально, например, в папку tmp.
2) Боту отправляй локальный файл.
3) Чисти папку tmp после отправки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
25 апр. 2024, в 16:12
2000 руб./за проект
25 апр. 2024, в 16:08
100000 руб./за проект