`

PHP通过图片文件头信息来识别图片的类型【扩展名】

    博客分类:
  • PHP
 
阅读更多

 

$file = @fopen('包含路径的文件名', "rb");
$bin = fread($file, 15); //只读15字节 各个不同文件类型,头信息不一样。
if(true === get_type_list($bin)) {
    echo '该图片在指定的图片格式中';
}
else{
    echo '该图片上传格式错误';
  }
  
   
/**
* 得到文件头与文件类型映射表*
* author wengxianhu
* @param $bin string 图片的二进制前一段字符
* @return boolean
*/
public function get_type_list($bin)
{
    $array = array(
        array("FFD8FFE1","jpg"),
        array("89504E47","png"),
        array("47494638","gif"),
        array("FFD8FFE000104A46", "jpeg")
//         array("49492A00","tif"),
//         array("424D","bmp"),
//         array("41433130","dwg"),
//         array("38425053","psd"),
//         array("7B5C727466","rtf"),
//         array("3C3F786D6C","xml"),
//         array("68746D6C3E","html"),
//         array("44656C69766572792D646174","eml"),
//         array("CFAD12FEC5FD746F","dbx"),
//         array("2142444E","pst"),
//         array("D0CF11E0","xls/doc"),
//         array("5374616E64617264204A","mdb"),
//         array("FF575043","wpd"),
//         array("252150532D41646F6265","eps/ps"),
//         array("255044462D312E","pdf"),
//         array("E3828596","pwl"),
//         array("504B0304","zip"),
//         array("52617221","rar"),
//         array("57415645","wav"),
//         array("41564920","avi"),
//         array("2E7261FD","ram"),
//         array("2E524D46","rm"),
//         array("000001BA","mpg"),
//         array("000001B3","mpg"),
//         array("6D6F6F76","mov"),
//         array("3026B2758E66CF11","asf"),
//         array("4D546864","mid"),
//         array("D3C3BBA7", 'csv')
    );
   
    foreach ($array as $v)
    {
        $blen = strlen(pack("H*", $v[0])); //得到文件头标记字节数
        $tbin = substr($bin, 0, intval($blen)); ///需要比较文件头长度
        if(strtolower($v[0]) == strtolower(array_shift(unpack("H*", $tbin))))
        {
            return true;
        }
    }
    return false;
}

 

分享到:
评论

相关推荐

    php通过文件头检测文件类型通用代码类(zip,rar等)

    传统的验证方法是通过文件的扩展名来判断文件类型,但这种方法存在安全隐患,因为用户可以通过修改文件扩展名来绕过安全检查,导致文件类型与内容不符。在这种情况下,更安全的做法是使用文件的“文件头”信息来判断...

    PHP取二进制文件头快速判断文件类型的实现代码

    一般我们都是按照文件扩展名来判断文件类型,但是这个很不靠谱,轻易就通过修改扩展名来躲避了,一般必须要读取文件信息来识别,PHP扩展中提供了类似 exif_imagetype 这样的函数读取图片类的文件类型,但是很多时候...

    php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】

    另一种方法是读取文件的前几个字节(通常是文件头),然后根据这些字节的特定模式来识别文件类型。这种方法适用于某些特定格式的文件,如图像或音频文件,它们的文件头通常包含标识文件类型的特殊字符序列。以下是一...

    文件上传后缀名与文件类型对照表

    值得注意的是,文章还指出了一些后缀名对应的MIME类型为`application/octet-stream`,这通常意味着文件类型未知或不确定,需要通过其他方式进一步识别。 综上所述,文章提供了关于文件上传后缀名与文件类型对照的...

    利用PHP判断文件是否为图片的方法总结共7页.pdf.zi

    `exif_imagetype`函数基于文件头信息快速识别图像类型,返回值对应常量`IMAGETYPE_JPEG`, `IMAGETYPE_PNG`, `IMAGETYPE_GIF`等。如果返回值不为`FALSE`,则为图片: ```php $imageType = exif_imagetype('path/to...

    php文件类型对照表.pdf

    这份PDF文档列出了PHP如何根据文件的扩展名识别并关联到相应的MIME类型。MIME类型是一种标准,用于定义网络上传输的数据类型,确保浏览器、服务器等能够正确处理这些数据。 在对照表中,可以看到各种常见的文件格式...

    获取文件类型的源代码资源

    但有时,我们可能需要通过编程方式来识别文件的类型,特别是在没有扩展名或者扩展名被更改的情况下。以下将详细讨论如何在不同的编程语言中实现获取文件类型的功能。 1. **Python**: 在Python中,我们可以使用`...

    php实现下载图片的通用方法类

    2. **检查图片扩展名**:通过使用PHP的内置函数`pathinfo()`,我们可以获取文件的扩展名,如`.jpg`, `.png`, `.gif`等。例如: ```php $imageInfo = pathinfo($imagePath); $extension = $imageInfo['extension']...

    php 读取文件头判断文件类型的实现代码

    通过读取文件头的几个字节,我们可以识别出文件的实际类型,这种方法更加可靠。下面将详细讨论如何使用PHP实现这一功能。 首先,让我们回顾一下提供的代码示例。这个例子中,我们打开一个文件并读取其前两个字节,...

    php 如何获取文件的后缀名

    它不仅可以处理文件没有扩展名的情况,还可以指定返回路径信息的特定部分,更加灵活和健壮。在使用`pathinfo()`函数时,还应注意第二个参数的正确使用,避免使用位运算符`|`来指定多个返回值,因为这种方式可能无法...

    PHP—文件上传.docx

    PHP文件上传功能允许用户通过网页将文件上传到服务器。...在实际应用中,除了基本的文件类型和大小验证外,还应考虑其他安全措施,如检查文件扩展名、防止文件覆盖、限制上传速率等,以确保系统安全。

    php获得文件的mime type类.zip

    5. 扩展性考虑:为了增加类的灵活性,可以添加配置选项,让用户自定义当无法识别文件类型时返回的默认MIME类型。 以下是一个简单的`MimeTypeDetector`类的示例: ```php class MimeTypeDetector { public ...

    php判断文件上传图片格式的实例详解

    以下是一个改进的方法,它基于文件的二进制头信息来识别图片类型: ```php public function getImagetype($filename){ $file = fopen($filename, 'rb'); // 以二进制读取模式打开文件 $bin = fread($file, 2); //...

    php头像上传源码可以修改删除程序源码

    这可以通过限制上传文件类型、检查文件扩展名、使用白名单等方式实现。`upload.php`中应包含这些安全措施。 9. **日志和错误处理**:为了追踪和解决可能出现的问题,源码可能包含了错误处理和日志记录部分,以便在...

    Php基于web的文件管理系统

    - 文件名处理,避免文件名冲突和保留原有文件扩展名。 4. **文件下载功能** - 使用`header()`函数设置HTTP响应头,告知浏览器以下载方式处理响应内容。 - 使用`readfile()`或`file_get_contents()`读取并发送...

    提取GIF动画帧信息的PHP库

    GifFrameExtractor库通过解析GIF文件的头部信息,识别出图形控制扩展块(GCE)和图像数据块,从而能够解码出每一帧的具体属性。GCE块包含帧的延迟时间,而图像数据块则包含了实际的像素数据。 使用...

Global site tag (gtag.js) - Google Analytics