【问题标题】:Mime Type vs Extension Check, which method is better to check file type? [closed]Mime Type vs Extension Check,哪种方法更好检查文件类型? [关闭]
【发布时间】:2017-05-29 22:23:15
【问题描述】:

我正在创建一个脚本来上传图像文件。有两种方法可以验证文件是否为图像。

第一个是通过检查扩展:

$extension = strtolower(substr($filename, strrpos($filename, '.') + 1, strlen($filename) - strrpos($filename, '.')));
if ($extension == "jpg") // UPLOAD

另一种是通过检查 mime 类型:

$imageinfo = getimagesize($filename);
if ($imageinfo['mime'] == "image/jpeg") // UPLOAD

验证文件是否为图像的更好方法是什么?

【问题讨论】:

  • 很公平。但是我想知道这些方法中哪一种更好?
  • 两者都不那么可靠。您可能想查看 PHP Fileinfo 模块。虽然仍然不是 100% 可靠。
  • 如果你想确保文件是使用像 Imagick 这样的库的图像我认为更可靠
  • 两者都很容易被伪造,所以两者都没有真正的好坏

标签: php file-upload


【解决方案1】:

使用第一个,因为不是每个 MIME 类型都有固定的文件扩展名。此外,application/octet-stream 等 MIME 类型可以引用多个文件扩展名。您也可以使用pathinfo() 获取文件扩展名。

查看以下链接

How to extract a file extension in PHP?

Not every MIME type has a fixed file extension...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多