Вот так работает хорошо
<form action="https://api.telegram.org/botToken/sendDocument" enctype="multipart/form-data" method="post">
<p><b>ID пользователя:</b>
<input type="text" name="chat_id" value="*******"></p>
<p><b>Файл для отправки:</b>
<input type="file" name="document"></p>
<p><input type="submit" value="Отправить"></p>
</form>
Но так как токен лежит на поверхности, хотелось бы данные получать в php файл и отправлять уже из него. Не могу понять, как мне правильно распарсить поле с файлом и отправить его.
Пробовал все вариации с $_FILES['userfile']['tmp_name']
- не работает, пробовал загружать файл на сервер, и уже отправлять ссылку на него прямую - не работает, ограничение по типу файлов.
Направьте, пожалуйста...
В данный момент пытаюсь отправить вот так:
$url = "https://api.telegram.org/botToken/sendDocument";
// $_document = "ok.json";
$_document = $_FILES['document']['tmp_name'];
$document = new CURLFile(realpath($_document));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, ["chatID" => *****]);
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);
print_r($out);
Ну и HTML форму на фронте:
<form action="raketa_api.php" enctype="multipart/form-data" method="post">
<p><b>Файл для отправки:</b>
<input type="file" name="document"></p>
<input type="hidden" name="MAX_FILE_SIZE" value="50000000" />
<p><input type="submit" value="Отправить"></p>
</form>
В ответ получаю ошибку {"ok":false,"error_code":400,"description":"Bad Request: there is no document in the request"}
$url = "https://api.telegram.org/botToken/sendDocument";
// $_document = "ok.json";
$_document = $_FILES['document']['tmp_name'];
$document = new CURLFile(realpath($_document));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, ["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);
print_r($out);
Не передавался аргумент с файлом. Теперь файл отправляется нормально, но с тестовым именем. Доработать немного код и все будет супер! Всем спасибо!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я получаю дату и время в таком формате: 2017-8-15T12:45 Как ее можно преобразовать в метку времени UNIX?
Доброго времени сутокСтоит задача реализовать скачивание файлов на сайте с другого сервера
Помогите! Я пытался подключиться к базе данных с помощью php кода