curl post multipart / form-data api

时间:2015-07-02 10:56:47

标签: php api curl photo send

我无法发送图片。

更多信息 - 电报
https://core.telegram.org/bots/api#sendphoto

我要发一张照片,这个方法没用。 还有其他方法吗?

    <?php
       $Photo = "http://www.pawprint.net/images/news/1-4fac83467069c.png";
       $IDUser = 26034352;
        $Data = array(
        'chat_id' => $IDUser,
        'photo' => $Photo,
        'caption' => 'hi'
        );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,"https://api.telegram.org/bot93816942:AAHnjqsjpJjRItc7ySbUq4C5IRLqytpPK6k/sendPhoto");
    curl_setopt($ch, CURLOPT_POST, 1);
    //curl_setopt($ch, CURLOPT_POSTFIELDS,$options);
    // in real life you should use something like:
     curl_setopt($ch, CURLOPT_POSTFIELDS, 
              http_build_query($Data));
    // receive server response ...
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $server_output = curl_exec ($ch);
    curl_close ($ch);
    // frther processing ....
    if ($server_output == "OK") { 
        echo "ok";
    }
    ?>

1 个答案:

答案 0 :(得分:0)

我发现您想要使用其URL发送位于外部服务器上的图片 所以你可以这样做

define('website', 'https://api.telegram.org/bot<bot-token>');

    function send($method, $datas)
    {
        $url = website . "/" . $method;
        if (!$curld = curl_init()) {
            exit;
        }
        curl_setopt($curld, CURLOPT_POST, true);
        curl_setopt($curld, CURLOPT_POSTFIELDS, $datas);
        curl_setopt($curld, CURLOPT_URL, $url);
        curl_setopt($curld, CURLOPT_RETURNTRANSFER, true);
        $output = curl_exec($curld);
        curl_close($curld);
    }

现在只需使用正确的方法名称和数据调用此函数。发送照片的示例:

$postfields = array(
   'chat_id' => $ChatID,
   'photo' => "http://url.of/photo.jpg"
);

send("sendPhoto", $postfields);
相关问题