当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在PHP中检查上传文件的文件类型?》经验,为你挑选了2个好方法。

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

因此,我经常使用一些"严格"的mime类型检查.当然这是非常有缺陷的,因为mime类型通常是错误的,用户无法上传他们的文件.伪造和/或改变也很容易.除此之外,每个浏览器和操作系统都以不同的方式处理它们.

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

如果你只想要图像,使用类似的东西getimagesize()会起作用.

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

编辑:如果你没有mime_content_type或Fileinfo和系统("file -bi $ uploadedfile")给你错误的文件类型,还有哪些其他选项?



1> davr..:

看一下mime_content_type或Fileinfo.这些是内置的PHP命令,用于通过查看文件的内容来确定文件的类型.另外还要检查上面两页的评论,还有一些其他好的建议.

我个人幸运地使用了一些基本的东西system("file -bi $uploadedfile"),但我不确定这是不是最好的方法.


system("file -bi - ".escapeshellarg($ uploadedfile))更安全.

2> Sudden Def..:

恕我直言,所有MIME类型的检查方法都没用.

假设你有哪个应该有MIME类型application/pdf.标准方法试图找到看起来像PDF标题的东西(%PDF-或类似的东西),并且它们将成功返回'好吧,好像这是一个PDF文件'.但实际上这并不意味着什么.您可以上传仅包含的文件%PDF-1.4,它将通过MIME检查.

我的意思是如果文件具有预期的MIME类型 - 它将始终传递MIME类型检查,否则结果是未定义的.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有