@urajo

Как правильно отправлять файлы(ворд) в телегу?

Есть такой код. Он отправляет сообщение, а за ним сразу файл. Файл приходит с измененным названием на подобии phpkD95Sw и при этом в формате txt, какого бы формата файл я не загрузил в форму, придет txt. Почему? Как от этого избавиться?

<?php 
  function sendFileTelegram($fileTempName, $name, $email, $message) {
      $token = "5347735014:AAFRP0TxxkSzJXhe2kL74Pcl8jUdS9*****";
      $chat_id = "-74360****";
      $txt = '';

      $arr = array(
        "Имя пользователя: " => $name,
        "email: " => $email,
        "Сообщение: " => $message
      );

      $urlSite = "https://api.telegram.org/bot{$token}/sendDocument";
    
      $document = new CURLFile(realpath($fileTempName));

      foreach($arr as $key => $value) {
        $txt .= "<b>".$key."</b> ".$value."%0A";
      };
    
      $sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");

      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $urlSite);
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, ["chat_id" => $chat_id, "document" => $document]);
      curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type:multipart/form-data"]);
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
      $out = curl_exec($ch);
      curl_close($ch);

      
      if ($sendToTelegram) {
        header('Location: thank-you.html');
      } else {
        echo "Error";
      }
    }
    
    sendFileTelegram($_FILES["telegram__file"]["tmp_name"], $_POST["name"], $_POST["email"], $_POST["message"]);
?>
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 1
@TheAndrey7
Третий параметр CURLFile нужно задать, указав желаемое имя файла.
https://www.php.net/manual/ru/class.curlfile.php
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы