/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/php/php-507-162-001/main.php
53 строки
1 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
<?php declare(strict_types=1); function detectMime(string $path): string { $finfo = new finfo(FILEINFO_MIME_TYPE); return $finfo->file($path) ?: 'application/octet-stream'; } if ($_SERVER['REQUEST_METHOD'] !== 'POST') { http_response_code(405); exit('Method Not Allowed'); } $file = $_FILES['document'] ?? null; if ($file === null || $file['error'] !== UPLOAD_ERR_OK) { http_response_code(400); exit('Ошибка загрузки'); } $tmp = $file['tmp_name']; $maxBytes = 5 * 1024 * 1024; $allowedMimes = ['application/pdf' => 'pdf']; if ($file['size'] > $maxBytes || !is_uploaded_file($tmp)) { http_response_code(400); exit('Файл отклонён'); } $mime = detectMime($tmp); if (!isset($allowedMimes[$mime])) { http_response_code(400); exit('Допустим только PDF'); } $extension = $allowedMimes[$mime]; $storedName = bin2hex(random_bytes(16)) . '.' . $extension; $uploadDir = __DIR__ . '/../var/uploads'; $target = $uploadDir . '/' . $storedName; if (!is_dir($uploadDir) && !mkdir($uploadDir, 0750, true)) { http_response_code(500); exit('Каталог недоступен'); } if (!move_uploaded_file($tmp, $target)) { http_response_code(500); exit('Не удалось сохранить файл'); } // $file['name'] — только для UI или записи в БД как "оригинальное имя"