如何使用PHP查找文件的MIME类型?

49

我有一个index.php文件,它必须处理许多不同的文件类型。如何根据REQUEST_URI猜测文件类型?

如果我请求http://site/image.jpg,并且所有请求都通过看起来像这样的index.php重定向:

<?php
   include('/www/site'.$_SERVER['REQUEST_URI']);
?>

如何使它正确工作?

我应该基于所请求的文件扩展名进行测试,还是有一种获取文件类型的方法?


3
你能否重新表述你的问题?我希望你的网站上并没有真的运行那样的代码。 - Till
1
不,当然这不是实际工作的方式。那只是我认为最好的传达观点的方式。 - Issac Kelly
13个回答

0

我没有使用过它,但有一个PECL扩展可以获取文件的MIME类型。 官方文档在手册中。

根据您的目的,文件扩展名可能可以使用,但它并不是非常可靠,因为它很容易更改。


0

如果你只是处理图片,可以使用[getimagesize()][1]函数,它包含有关图像的各种信息,包括类型。

更一般的方法是使用PECL的FileInfo扩展。

有些人对该扩展有严重的抱怨...所以如果你遇到严重的问题或由于某些原因无法安装该扩展,你可能需要查看已弃用的函数mime_content_type()


-1

我使用了一个用户函数,从http://php.net/manual/de/function.mime-content-type.php中获得了非常好的结果。@''john dot howard at prismmg dot com 26-Oct-2009 03:43''

function get_mime_type($filename, $mimePath = '../etc') { ...

它不使用finfoexec或废弃的函数。

它也可以很好地处理远程资源!


4
在你撰写这个答案很久之前,这个函数就已经被废弃了,因此提出这个解决方案是没有意义的。 - trejder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接