Описание
Используйте этот метод, чтобы получить основную информацию о файле и подготовить его к скачиванию. На данный момент боты могут скачивать файлы размером до 20 МБ. При успешном выполнении возвращается объект File. Затем файл можно скачать по ссылке https://api.telegram.org/file/bot, где берётся из ответа. Гарантируется, что ссылка будет действительна как минимум 1 час. Когда срок действия ссылки истечёт, можно запросить новую, снова вызвав getFile.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| file_id | String | Да | Идентификатор файла, о котором нужно получить информацию |
Примечание: Эта функция может не сохранять оригинальное имя файла и MIME-тип. Вам следует сохранить MIME-тип файла и имя (если доступно) при получении объекта File.
Примеры
php
<?php
$botToken = 'YOUR_BOT_TOKEN';
$fileId = 'FILE_ID_TO_GET_INFO';
$apiUrl = "https://api.telegram.org/bot{$botToken}/getFile";
$postData = [
'file_id' => $fileId
];
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/x-www-form-urlencoded'
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
$result = json_decode($response, true);
if ($result['ok']) {
$file = $result['result'];
echo "File Information:\n";
echo "File ID: " . $file['file_id'] . "\n";
echo "File Unique ID: " . $file['file_unique_id'] . "\n";
echo "File Size: " . ($file['file_size'] ?? 'N/A') . " bytes\n";
echo "File Path: " . ($file['file_path'] ?? 'N/A') . "\n";
// If file_path exists, you can download the file
if (isset($file['file_path'])) {
$downloadUrl = "https://api.telegram.org/file/bot{$botToken}/{$file['file_path']}";
echo "Download URL: " . $downloadUrl . "\n";
// Example of downloading the file
$fileContent = file_get_contents($downloadUrl);
if ($fileContent !== false) {
$fileName = basename($file['file_path']);
file_put_contents($fileName, $fileContent);
echo "File downloaded as: " . $fileName . "\n";
}
}
} else {
echo "Error: " . $result['description'] . "\n";
}
} else {
echo "HTTP Error: " . $httpCode . "\n";
}
// Alternative using file_get_contents with stream context
function getFileInfo($botToken, $fileId) {
$apiUrl = "https://api.telegram.org/bot{$botToken}/getFile";
$options = [
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query(['file_id' => $fileId])
]
];
$context = stream_context_create($options);
$response = file_get_contents($apiUrl, false, $context);
return json_decode($response, true);
}
// Usage example
// $fileInfo = getFileInfo('YOUR_BOT_TOKEN', 'FILE_ID');
// if ($fileInfo['ok']) {
// print_r($fileInfo['result']);
// }
?>
python
import requests
# Токен вашего бота
BOT_TOKEN = "YOUR_BOT_TOKEN"
def get_file(file_id):
"""
Получает информацию о файле по его file_id.
Args:
file_id (str): Идентификатор файла для получения информации.
Returns:
dict: Информация о файле в виде словаря.
"""
url = f"https://api.telegram.org/bot{BOT_TOKEN}/getFile"
params = {"file_id": file_id}
response = requests.post(url, params=params)
return response.json()
def download_file(file_path, save_path):
"""
Скачивает файл по полученному file_path.
Args:
file_path (str): Путь к файлу, полученный из getFile.
save_path (str): Локальный путь для сохранения файла.
"""
url = f"https://api.telegram.org/file/bot{BOT_TOKEN}/{file_path}"
response = requests.get(url)
with open(save_path, 'wb') as f:
f.write(response.content)
# Пример использования
if __name__ == "__main__":
# Пример file_id (должен быть получен из сообщения с файлом)
example_file_id = "AgACAgIAAxkBAAIB..."
# Получаем информацию о файле
file_info = get_file(example_file_id)
if file_info.get("ok"):
file_path = file_info["result"]["file_path"]
print(f"File path: {file_path}")
print(f"File size: {file_info['result'].get('file_size', 'N/A')} bytes")
# Скачиваем файл
download_file(file_path, "downloaded_file")
print("File downloaded successfully!")
else:
print(f"Error: {file_info.get('description')}")
Дополнительно
- File - Объект, представляющий файл, доступный для скачивания через Telegram Bot API, с информацией о его идентификаторах, размере и пути.