Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何获取文件的内容类型_C++_Html_Unix - Fatal编程技术网

C++ 如何获取文件的内容类型

C++ 如何获取文件的内容类型,c++,html,unix,C++,Html,Unix,我正在实现一个HTTP/1.0服务器,它处理GET或HEAD请求 我已经完成了日期、上次修改和内容长度,但我不知道如何获取文件的内容类型 它必须为目录返回目录(我可以使用stat()函数),对于常规文件,text/html为text或html文件,而image/gif为图像或gif文件 是否应该使用文件名对其进行硬编码 我想知道是否有任何函数可以获取此内容类型您可以查看文件扩展名(这是大多数web服务器所做的——例如,请参阅/etc/mime.types文件;或者您可以使用libmagic通过查

我正在实现一个HTTP/1.0服务器,它处理
GET
HEAD
请求

我已经完成了
日期
上次修改
内容长度
,但我不知道如何获取文件的
内容类型

它必须为目录返回目录(我可以使用
stat()
函数),对于常规文件,
text/html
text
html
文件,而
image/gif
为图像或
gif
文件

是否应该使用文件名对其进行硬编码


我想知道是否有任何函数可以获取此
内容类型

您可以查看文件扩展名(这是大多数web服务器所做的——例如,请参阅
/etc/mime.types
文件;或者您可以使用
libmagic
通过查看文件的前几个字节来自动确定内容类型。

这取决于您想要的复杂程度

如果所讨论的文件都有正确的名称,并且只有几种类型需要处理,那么使用基于开关的文件后缀就足够了。在极端情况下,无论文件是什么,做出正确的决定都可能需要复制Unix
file
命令的功能,或者在questi中的文件上运行它打开(然后将输出转换为适当的
内容类型