Telegram API: Datei senden mit multipart/form-data

xep22

Banned
Registriert
Apr. 2018
Beiträge
395
hallo,

ich will mit der Telegram API Bilder und so senden. Problem ist, dass der Link sich immer ändert, aber Telegram dann immer seine gecachte Version sendet. In der Doku steht dazu :

Code:
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.

Aber wie genau verwende ich multipart/form-data ? Ich habe es mal so in das cURL setopt probiert als Header, hilft aber nicht:

PHP:
function sendPhoto($bot_id,$chat_id,$caption,$disable_notification,$photo_url)
{
    $ch=curl_init('https://api.telegram.org/bot'.$bot_id.'/sendPhoto');
    curl_setopt($ch, CURLOPT_HTTPHEADER, 'Content-Type: multipart/form-data;charset=utf-8');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);

    $param=array(
        'chat_id' => $chat_id,
        'caption' => $caption,
        'parse_mode' => 'html',
        'disable_notification' => $disable_notification,
        'photo' => $photo_url
    );

    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param));

    $result=curl_exec($ch);
    curl_close($ch);

    return $result;
}
 
Nein ist ganz klein... Auch damit kommt nicht die aktuelle Datei an.
 
xep22 schrieb:
Nein ist ganz klein... Auch damit kommt nicht die aktuelle Datei an.
naja, kein wunder. richtig lesen:
or upload a new one using multipart/form-data.
damit ist ein file-upload gemeint, bei dem einer der parts im multipart/form-data format die datei selbst ist. in zeile 14 deines OP codes steht jedoch:
Code:
'photo' => $photo_url
bei der obigen formulierung will die API wohl keine URL, sondern 'ne binaere datei. du wirst also nicht drumherumkommen, die datei irgendwo zwischenzuspeichern (variable oder dateisystem) und von dort hochzuladen.
 
Zurück
Oben