59 lines
1.7 KiB
PHP
59 lines
1.7 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
require_once __DIR__ . '/admin_bootstrap.php';
|
|
require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/file_api_client.php';
|
|
|
|
$pdo = admin_get_pdo();
|
|
admin_require_auth($pdo);
|
|
|
|
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
|
|
if ($id <= 0) {
|
|
http_response_code(400);
|
|
header('Content-Type: text/plain; charset=utf-8');
|
|
echo 'Nieprawidłowe ID';
|
|
exit;
|
|
}
|
|
|
|
$inline = isset($_GET['inline']) ? (int)$_GET['inline'] : 0;
|
|
|
|
try {
|
|
$stmt = $pdo->prepare(
|
|
'SELECT file_name, file_mime, file_size, file_path '
|
|
. 'FROM admin_chat_messages WHERE id = :id LIMIT 1'
|
|
);
|
|
$stmt->execute([':id' => $id]);
|
|
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
$hasFilePath = !empty($row['file_path']);
|
|
|
|
if (!$row || !$hasFilePath) {
|
|
http_response_code(404);
|
|
header('Content-Type: text/plain; charset=utf-8');
|
|
echo 'Brak pliku';
|
|
exit;
|
|
}
|
|
|
|
if ($hasFilePath) {
|
|
// Pobierz przez FastAPI (streaming na wyjście)
|
|
$storedName = basename((string)$row['file_path']);
|
|
$subfolder = dirname((string)$row['file_path']);
|
|
|
|
try {
|
|
$fileApi = get_file_api_client();
|
|
$fileApi->proxyFile($subfolder, $storedName, $inline === 1);
|
|
} catch (RuntimeException $e) {
|
|
$code = (int)$e->getCode();
|
|
http_response_code($code === 404 ? 404 : 500);
|
|
header('Content-Type: text/plain; charset=utf-8');
|
|
echo 'Błąd pobierania pliku: ' . $e->getMessage();
|
|
}
|
|
exit;
|
|
}
|
|
} catch (Throwable $e) {
|
|
http_response_code(500);
|
|
header('Content-Type: text/plain; charset=utf-8');
|
|
echo 'Błąd pobierania pliku';
|
|
exit;
|
|
}
|