• 技术文章 >后端开发 >php教程

    php 如何判断二进制流的文件类型

    2016-10-10 11:55:53原创2283

    我最近采用下边的方式判断:下载文件,得到文件流->存储到硬盘->判断文件类型。
    不过觉得这样显得很多余,能不能在file_get_contents()之后不用存盘便可以判断文件类型?

    $image=file_get_contents($url);
    file_put_contents($imagePath, $image);   //将图片流存入服务器图片目录
    $type=image_type_to_extension(exif_imagetype($imagePath));   //文件类型

    回复内容:

    我最近采用下边的方式判断:下载文件,得到文件流->存储到硬盘->判断文件类型。
    不过觉得这样显得很多余,能不能在file_get_contents()之后不用存盘便可以判断文件类型?

    $image=file_get_contents($url);
    file_put_contents($imagePath, $image);   //将图片流存入服务器图片目录
    $type=image_type_to_extension(exif_imagetype($imagePath));   //文件类型

    $image = file_get_contents($url);
    
    echo check_image_type($image);
    
    function check_image_type($image)
    {
        $bits = array(
            'JPEG' => "\xFF\xD8\xFF",
            'GIF' => "GIF",
            'PNG' => "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a",
            'BMP' => 'BM',
        );
        foreach ($bits as $type => $bit) {
            if (substr($image, 0, strlen($bit)) === $bit) {
                return $type;
            }
        }
        return 'UNKNOWN IMAGE TYPE';
    }

    $finfo = new finfo(FILEINFO_MIME_TYPE);
    var_dump($finfo->file('t.jpg')); // ==> image/jpeg

    使用finfo扩展

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php
    上一篇:MVC,在M层建立类,C层new相应类的对象,然后传到V层,V层利用对象调用相应类方法,请问您见过这个模式吗? 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 手写PHP API框架(二)之Composer的安装使用• 手写PHP API框架(三)之反射介绍• 手写PHP API框架(一)之PSR规范• 聊聊php怎么让Swoole/Pool进程池实现Redis持久连接• 一文解析PHP元转分的错误示范(附代码实例)
    1/1

    PHP中文网