prepare('SELECT file_name, file_mime, file_size, file_data FROM admin_chat_messages WHERE id = :id LIMIT 1'); $stmt->execute([':id' => $id]); $row = $stmt->fetch(PDO::FETCH_ASSOC); if (!$row || empty($row['file_data'])) { http_response_code(404); header('Content-Type: text/plain; charset=utf-8'); echo 'Brak pliku'; exit; } $name = (string)($row['file_name'] ?? 'plik'); $mime = (string)($row['file_mime'] ?? 'application/octet-stream'); header('Content-Type: ' . $mime); $dispType = $inline ? 'inline' : 'attachment'; header('Content-Disposition: ' . $dispType . '; filename="' . str_replace('"', '', $name) . '"'); if (!empty($row['file_size'])) { header('Content-Length: ' . (string)$row['file_size']); } echo $row['file_data']; exit; } catch (Throwable $e) { http_response_code(500); header('Content-Type: text/plain; charset=utf-8'); echo 'Błąd pobierania pliku'; exit; }