Довідник MIME-типів
Розширення файлу, його MIME-тип і готовий заголовок Content-Type. Пошук за розширенням або типом.
Дає правильний Content-Type для відповіді з файлом
Відповідь із файлом без правильного Content-Type відкривається як текст або взагалі не відкривається, а завантаження з неправильним типом не проходить валідацію. Довідник дає MIME-тип за розширенням і навпаки, з готовим рядком заголовка й прикладом у коді.
Визначати тип за вмістом уміє розширення fileinfo: finfo_file читає перші байти й повертає MIME незалежно від імені. Віддавати файл із правильним заголовком у Laravel простіше через response()->file або Storage::download, які підставляють тип самі; у чистому PHP header('Content-Type: …') перед readfile.
$mime = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $path); // image/webp
// Laravel: тип підставиться сам
return response()->file($path);
return Storage::download('reports/2026-09.pdf');
// Валідація завантаження за вмістом, а не за розширенням
$request->validate(['cv' => ['file', 'mimes:pdf,docx', 'max:5120']]);
Що питають про цей інструмент
Ні. Заголовок Content-Type у multipart-запиті ставить клієнт, і його легко підробити. Перевіряйте тип за вмістом: finfo_file читає сигнатуру файлу, а в Laravel правило валідації mimes робить те саме. Розширення в імені файлу теж лише підказка.
application/json, і лише він зареєстрований стандартом. Кодування UTF-8 для JSON мається на увазі, тому charset у заголовку не обовʼязковий, але не шкодить. Для JavaScript правильний тип text/javascript, application/javascript вважається застарілим.
Тип «просто байти», коли справжній невідомий або його не треба показувати. Браузер запропонує зберегти файл замість відкрити. Якщо віддаєте PDF чи зображення, ставте їхній тип, інакше вбудований перегляд не спрацює.