Telgram Bot Bad Gateway

cur*_*der 5 php guzzle telegram telegram-bot

我正在尝试使用TelegramBot API使用以下代码上传图片

if(file_exists($_FILES['fileToUpload']['tmp_name'])){
        $new = fopen($_FILES['fileToUpload']['tmp_name'], "rb");
        $contents = fread($new, $_FILES['fileToUpload']['size']);
        fclose($new);
        $client = new Client();
        $response = $client->post("https://api.telegram.org/botMyApiKey/sendPhoto", [
            'body'    => ['chat_id' => '11111111', 'photo' => $contents]
        ]);
        var_dump($response);
}else{
        echo("No File");
}
Run Code Online (Sandbox Code Playgroud)

我到了Nginx 502 Bad Gateway.我使用的方法是否正确?我在使用API 获取getMe方面没有任何问题.

PS我正在使用Guzzle 5.3.0 for php兼容性.

Chr*_*and 1

尝试将其作为多部分帖子进行。

$client->post(
    'https://api.telegram.org/botMyApiKey/sendPhoto', 
    array(
        'multipart' => array(
            array(
                'name'     => 'chat_id',
                'contents' => '1111111'
            ),
            array(
                'name'     => 'photo',
                'contents' => $contents
            )
        )
    )
);
Run Code Online (Sandbox Code Playgroud)

Guzzle 文档参考

适用于狂饮 5.3

use GuzzleHttp\Client;

$client = new Client(['defaults' => [
    'verify' => false
]]);

$response = $client->post('https://api.telegram.org/bot[token]/sendPhoto', [
    'body' => [
        'chat_id' => 'xxxxx',
        'photo' => fopen(__DIR__ . '/test.jpg', 'r')
    ]
]);

var_dump($response);
Run Code Online (Sandbox Code Playgroud)

注意:您必须将文件句柄传递给“photo”属性,而不是文件的内容。