在 PHP 中检测文件类型:上传问题故障排除
您在使用 $_FILES['fupload' 验证图像文件类型时遇到挑战]['类型']。用户报告了不一致的错误消息,表明此方法可能不可靠。
为了确保准确的文件类型检测,请考虑替代方法:
使用 mime_content_type
您使用 mime_content_type($_FILES['fupload']['type']) 的建议部分正确。但是,仍然不建议仅依赖用户提供的值(即文件的 MIME 类型)。用户可以轻松地操纵这些信息。
更可靠的方法
对于图像文件,类型验证的首选方法是使用 exif_imagetype 函数,如下所示:
$allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF); $detectedType = exif_imagetype($_FILES['fupload']['tmp_name']); $error = !in_array($detectedType, $allowedTypes);
使用 finfo 函数
如果如果您的服务器支持 finfo 扩展,您可以利用 finfo_file 等函数来获取详细的文件信息,包括其 MIME 类型和其他属性:
$finfo = new finfo(FILEINFO_MIME_TYPE); $mime_type = $finfo->file($_FILES['fupload']['tmp_name']); $error = ($mime_type != 'image/gif' && $mime_type != 'image/png' && $mime_type != 'image/jpeg');
通过使用这些方法,您可以可靠地验证文件类型并防止意外文件上传期间出错。
以上是如何可靠地检测 PHP 中的文件类型以防止上传问题?的详细内容。更多信息请关注PHP中文网其他相关文章!