猿问

如何检查PHP中上传文件的文件类型?

在PHP网站上,他们建议的唯一实际检查是使用is_uploaded_file()或move_uploaded_file(),这里。当然,出于多种原因,您通常不希望用户上传任何类型的文件。


因此,我经常使用一些“严格”的MIME类型检查。当然,这是非常有缺陷的,因为通常哑剧类型是错误的,并且用户无法上传其文件。伪造和/或更改也非常容易。除此之外,每种浏览器和操作系统对它们的处理方式也不同。


另一种方法是检查扩展名,这当然比mime类型更容易更改。


如果只需要图像,则可以使用类似的方法getimagesize()。


那其他类型的文件呢?PDF,Word文档还是Excel文件?甚至是纯文本文件?


编辑:如果您没有mime_content_type或Fileinfo,并且system(“ file -bi $ uploadedfile”)给您错误的文件类型,还有哪些其他选择?


繁星coding
浏览 749回答 3
3回答

POPMUISE

看一下mime_content_type或Fileinfo。这些是内置的PHP命令,用于通过查看文件内容来确定文件的类型。还要检查以上两页上的评论,还有其他一些好的建议。就我个人而言system("file -bi $uploadedfile"),使用本质上是的东西我很幸运,但是我不确定这是否是最好的方法。

慕姐8265434

恕我直言,所有MIME类型检查方法都没有用。假设您已经拥有MIME类型application/pdf。标准方法正在尝试查找看起来像PDF标头(%PDF-或类似的东西)的东西,如果成功,它们将返回“好,好像这是PDF文件”。但这实际上并不代表任何意义。您可以上传仅包含的文件,该文件%PDF-1.4将通过MIME检查。我的意思是,如果文件具有预期的MIME类型-它将始终通过MIME类型检查,否则结果不确定。
随时随地看视频慕课网APP
我要回答