Я реализую сервер HTTP/1.0, который обрабатывает GET
или HEAD
.
Я закончил Date
, Last-Modified
и Content-Length
, но я не знаю, как получить Content-Type
файла.
Он должен возвращать каталог для каталога (который я могу использовать с помощью функции stat()
), а также для обычного файла text/html
для text
или html
файла и image/gif
для изображения или gif
файла.
Должно ли это быть жестко закодированным, используя имя файла?
Интересно, есть ли какая-нибудь функция для получения этого Content-Type
.
Вы можете посмотреть на расширение файла (это то, что делают большинство веб-серверов), например, файл /etc/mime.types
, или вы можете использовать libmagic
для автоматического определения типа содержимого, просмотрев первые несколько байтов файла,
Это зависит от того, насколько вы изощренны.
Если соответствующие файлы все правильно названы, и обрабатывать только несколько типов, достаточно суффикса файла на основе коммутатора. Переход к крайнему случаю, правильное решение, независимо от того, что представляет собой файл, вероятно, потребует либо дублирования функциональных возможностей команды file
Unix, либо его запуска в соответствующем файле (а затем перевода вывода в соответствующий Content-Type
).