1

我正在阅读php.net 链接上的文档,结果如下:

$_FILES['userfile']['type']

The mime type of the file, if the browser provided this information. An example 
would be "image/gif". This mime type is however NOT checked on the PHP side 
and therefore don't take its value for granted.

那么如何验证文件是否属于正确的 mime 类型,以防止用户将可能有害的文件上传到服务器?或以其他方式导致在服务器端执行的代码中出现错误(因为我可能会尝试在不是真正的 jpeg 图像的文件上使用 jpeg-only 函数)?

提前致谢

4

2 回答 2

1
    function getMimeType()
        {

                $finfo = new finfo(FILEINFO_MIME);
                $type = $finfo->file($_FILES['field_name']['tmp_name']);//change the field_name
                $mime = substr($type, 0, strpos($type, ';'));
                return $mime;

        }

        function isValidImage()
        {

            $mime = getMimeType();
            if(stristr($mime,'image'))
                return true;
            else 
                return false;

        }
        $res=isValidImage();

试试这个,它也会检查 mime。

于 2012-10-27T05:38:06.477 回答
0

您可以使用finfo_file来找出 PHP 认为该文件是什么类型。但是,我也不认为这可以依靠。我相信它使用启发式方法,它不会扫描整个文件以确保它完全有效。<html>例如,如果它以类似它会说它的开头text/html,它不会解析整个事物以确保它都是正确的。

于 2012-10-27T05:27:15.790 回答