Мне нужно отправить изображение с помощью "input type =" file "" без каких-либо ограничений на размер изображения - PullRequest
0 голосов
/ 22 апреля 2019

Я программирую телеграмма бота. Я хочу отправить изображение на серию идентификаторов, которые хранятся в моей БД (Я НЕ ЗАГРУЖАЮ ФОТО, Я ТОЛЬКО ОТПРАВЛЯЮ ЕГО). Функция отправки изображения работает просто отлично. Единственная проблема, с которой я столкнулся, заключается в том, что изображения размером более 1 МБ не будут отправлены.

Я нигде не загружаю эти изображения, я просто отправляю их с указанием URL-адреса изображения (так что при загрузке с максимальным размером это не проблема).

/*this is the function that I use to send the image*/


<?php

include "./db.php";
include "../Gestionale-Bar/webhook.php";

$queryID="SELECT DISTINCT acquirente FROM BackupChat ORDER BY acquirente";
$resultID=$conn->query($queryID);
$file =new CURLFile(realpath($_FILES["photo"]["tmp_name"]));
while($rowID = $resultID->fetch_assoc())
{
  $url        = $website . "/sendPhoto?chat_id=" . $rowID['acquirente'] ;
  $post_fields = array('chat_id'   => $rowID['acquirente'], 'photo'     => $file);

  $ch = curl_init(); 
  curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "Content-Type:multipart/form-data"
  ));
  curl_setopt($ch, CURLOPT_URL, $url); 
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); 
  $output = curl_exec($ch);
}

echo "<script language=\"Javascript\">
window.location.href='mywebpageblablabla';
</script>
";

?>
/*this is the input button where I select the photo*/


function img()
{
  var gridWrapper = document.querySelector('.content');
  gridWrapper.innerHTML =
    "<form action=\"inviaimg.php\" enctype=\"multipart/form-data\" method=\"post\" class=\"inputfile\">" +
    "<input type=\"file\" name=\"photo\"/>" +
    "<input type=\"submit\" value=\"send\" style=\"background-color:#2a2b30; color:#5c5edc; font-family:AvenirNext; width:10%; height:30px\"></form>"
}

Всякий раз, когда я пытаюсь отправить изображение размером менее 1 МБ, все работает нормально. Так что в основном я ожидаю прислать фотографии большего размера. :)

1 Ответ

0 голосов
/ 22 апреля 2019

в ваших $ post_fields у вас есть ключ фотография , значением которого является объект CURLFile. В документации ботов-телеграмм написано, что для передачи фотографии, существующей на серверах Telegram, , URL-адрес HTTP в виде строки для Telegram для получения фотографии, присваивается значение, равное file_id. из Интернета или загрузите локальную фотографию, передав путь к файлу .

Вы написали, что не загружаете файл, а просто отправляете. Несмотря на это, вы используете $ _ FILES [] , чтобы получить realpath () файла, который загружен. Возможно, это ошибка upload_max_filesize . Оформить заказ.

Проверьте также этот кусок кода:

$file = realpath($_FILES["photo"]["tmp_name"]);
while($rowID = $resultID->fetch_assoc())
{
   $url        = $website . "/sendPhoto?chat_id=" . $rowID['acquirente'] ;
   $post_fields = array('chat_id'   => $rowID['acquirente'], 'photo'     => $file
);

Замените старое на это и оставьте отзыв. Привет, слива!

Источники:

...