3 回答
TA贡献1886条经验 获得超2个赞
获取mimetype的本机方法:
对于PHP <5.3,请使用mime_content_type()
对于PHP> = 5.3,请使用finfo_open()或mime_content_type()
获得MimeType的替代方法是exif_imagetype和getimagesize,但是这些方法依赖于安装适当的库。此外,它们可能仅返回图像模仿类型,而不是magic.mime中给出的整个列表。
虽然mime_content_type可以从PHP 4.3,是FileInfo的扩展的一部分(这是默认,因为PHP 5.3启用,除了Windows平台,它必须手动启用,详见这里)。
如果您不想打扰系统上可用的功能,只需将所有四个函数包装到一个代理方法中,该方法将函数调用委托给任何可用的方法,例如
function getMimeType($filename)
{
$mimetype = false;
if(function_exists('finfo_open')) {
// open with FileInfo
} elseif(function_exists('getimagesize')) {
// open with GD
} elseif(function_exists('exif_imagetype')) {
// open with EXIF
} elseif(function_exists('mime_content_type')) {
$mimetype = mime_content_type($filename);
}
return $mimetype;
}
TA贡献1827条经验 获得超4个赞
在和getimagesize()应制定文件是否是一个图像的最明确的方式:
if(@is_array(getimagesize($mediapath))){
$image = true;
} else {
$image = false;
}
因为这是示例getimagesize()输出:
Array (
[0] => 800
[1] => 450
[2] => 2
[3] => width="800" height="450"
[bits] => 8
[channels] => 3
[mime] => image/jpeg)
TA贡献1966条经验 获得超4个赞
使用文件扩展名和getimagesize
功能来检测上载的文件是否具有正确的格式只是入门级检查,它可以简单地通过上传具有真实扩展名和图像头的某些字节但内容错误的文件来绕过。
为了安全起见,您可以对上传的图片进行缩略图/调整大小(即使具有原始图像尺寸),并保存此版本而不是上传的版本。还可以获取上传的文件内容并搜索特殊字符,例如<?php
查找文件是否为图片。
- 3 回答
- 0 关注
- 600 浏览
添加回答
举报