sendPhoto для загрузки фото не работает

Я пытаюсь построить бот-телеграмму, но проблема связана с изменением функций PHP из-за более новой версии PHP 5.6.

Ниже приведен основной код, который я нашел, с учетом изменений в php 5.6.

      #$filePhoto = curl_file_create($filepath, 'image/jpg', 'heInternet');  //**LINE 39**
$filePhoto = new CURLFile($filepath, 'image/jpg', 'heInternet');  //**LINE 40**
//$texto = $_POST['msg'];
$content = array(
'chat_id' => "@BugTheInternet",
'photo' => $filePhoto
);

//curl required to post
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); // required as of PHP 5.6.0
curl_setopt($ch, CURLOPT_POSTFIELDS, $filePhoto);  //**LINE 53**
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  //fix http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec ($ch);

Вот ошибка, которую я получаю:

Устарело: curl_setopt (): использование API @filename для файла
загрузка устарела. Пожалуйста, используйте класс CURLFile вместо
C: \ xampp где-то \ somefile.php в строке 53

Когда я изменяю $ content на $ filePhoto в строке 53. Он запускается, и сервер Telegram отправляет сообщения в формате JSON.
Ответ сервера:

"{"ok":false,"error_code":400,"description":"Error: Bad Request: there is no photo in request"}"

Я искал интернет в течение нескольких часов, находя решения. Кстати, два пути, предложенные для PHP 5.6, которые я использую, это в строке 39, 40.

Пожалуйста, помогите мне, если вы столкнулись с этим или иным образом.
благодарю вас.

0

Решение

Вы пытались отправить его хардкор так?

$ch = curl_init("https://api.telegram.org/bot<token>/sendPhoto&chat_id=<chatID>&photo=<path/to/your/image>");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_exec($ch);
curl_close ($ch);

Сначала я использовал POSTFIELDS и другие правильный также для cURL при отправке сообщения, но у меня это не сработает. Так что я hardcored это как пример выше, и это просто сработало.

0

Другие решения

вы должны удалить

'chat_id' => "@BugTheInternet",

из $ content и добавьте chat_id к URL-адресу curl, потому что

PHP библиотека cURL умирает, возвращая сообщение об ошибке «не удалось создать
забыть данные «при попытке использовать массив, который содержит значение
начиная с ‘@’. Если массив изменяется на строку в URL, закодированную как формат,
проблема не возникает. ссылка: https://bugs.php.net/bug.php?id=50060

0

По вопросам рекламы [email protected]