我有一个关于mime类型以及如何在php中处理它们的问题。
我的问题:
我有一个“CSSFile”类来重新获得有效的css文件。当使用文件路径对其进行实例化时,我的类应该检查css文件是否有效。这是通过检查mime类型来完成的。如果文件是普通的css文件,则确定mime类型为“text / css”。太好了!
但是我想允许该类接受发送css-header的php文件:
header("Content-type: text/css; charset: UTF-8");
在验证此文件时,php确定mime类型“text / x-php”。 该死的,我想通过设置这样的标题,我可以使我的文件成为php的有效css文件。 (我在这里做错了吗?)
好的,我现在的解决方案是读取我的php-css文件的标题以获取内容类型“text / css”。我只是无法弄清楚如何在不包含文件的情况下以非常方式获取标题。我写了这个方法:
private function getContentType(){
\ob_start();
include $this->relativePath;
\ob_end_clean();
$headerList = \headers_list();
$fileHeader = \array_pop($headerList);
$parsedHeader = \explode(':', $fileHeader);
if(!empty($parsedHeader)){
$key = \array_search('Content-type', $parsedHeader);
if($key !== FALSE && \array_key_exists(($key + 1), $parsedHeader)){
$contentType = \explode(';', $parsedHeader[($key + 1)]);
if(!empty($contentType)){ return \trim(\array_shift($contentType)); }
}
}
return NULL;
}
此方法确实返回内容类型“text / css”。但我不知何故不喜欢这个解决方案。我不想通过阅读收到的标题来包含文件来检查其内容类型。寻找我喜欢非常糟糕的风格。也许我可以通过“file_get_contents”加载文件的内容,但解析内容类型似乎很痛苦。是否有更好的方法来解决这个问题。
如果您有任何想法,请告诉我。
提前致谢
答案 0 :(得分:0)
php中有一个函数,它为指定的文件提供mime类型:
<强> http://php.net/mime_content_type 强>
此外,由于它已被弃用,因此需要PECL扩展来替换它(如php.net所述):
<强> http://www.php.net/manual/en/ref.fileinfo.php 强>
你认为你可以利用这些吗?
答案 1 :(得分:0)
如果是通过POST方式发送的,只需使用$_SERVER['CONTENT_TYPE']
。