php如何判断文件类型

php文件类型判断

php如何判断文件类型

方法一:pathinfo

代码示例:(推荐学习:PHP编程从入门到精通)

/** * 获取文件后缀(如果文件名为11.11,11不是后缀,会默认11为后缀)* $file string 文件路径或者文件名*/function get_extension($file){return pathinfo($file, PATHINFO_EXTENSION);}

登录后复制

说明: pathinfo具体使用方法,可以查看php手册。但是该方法仅仅只能根据文件后缀来判断文件类型,如果html后缀的文件,被修改成.php的后缀之后,读取到的则是php类型文件。

立即学习“PHP免费学习笔记(深入)”;

方法二:$_FILES

如果是php上传文件,则可以用$_FILES[‘uploadfile’][‘type’]来获取文件类型,但是同样会存在和pathinfo同样的问题,该方法仅仅只能根据文件后缀来判断文件类型。

方法三:php Fileinfo获取文件MIME类型(finfo_open)

代码示例:

<?php $finfo = finfo_open(FILEINFO_MIME); // 返回 mime 类型    $filename = '.Uploads.zip';    var_dump(finfo_file($finfo, $filename));    finfo_close($finfo);    die;

登录后复制

返回结果:

php-167.png

说明: 如果文件存在则返回文件类型,否则返回false。该方法需要php5.3.0+版本。可以根据返回的结果来判断是什么类型的文件。该方法即便是原文件被改过后缀,已然可以读到原文件类型。

方法四:读取文件头六个字节作为判断。

<?php // 官方示例function minimime($fname) {    $fh=fopen($fname,'rb');    if ($fh) {         $bytes6=fread($fh,6);        fclose($fh);         if ($bytes6===false) return false;        if (substr($bytes6,0,3)=="���") return 'image/jpeg';        if ($bytes6=="�PNG") return 'image/png';        if ($bytes6=="GIF87a" || $bytes6=="GIF89a") return 'image/gif';        return 'application/octet-stream';    }    return false;}// 将文件头4个字节转换成16进制判断function fileType($filename) {    // 读取文件的前4个字节,根据硬编码判断    $file = fopen ( $filename, "rb" );    $strFile = fread ( $file, 4 ); //只读文件头4字节    fclose ( $file );    $strInfo = @unpack ( "C4chars", $strFile );      //dechex(),把十进制转换为十六进制。      $code = dechex ( $strInfo ['chars1'] ) .               dechex ( $strInfo ['chars2'] ) .               dechex ( $strInfo ['chars3'] ) .       dechex ( $strInfo ['chars4'] );      $type = '';      switch ($code) //硬编码值查表      {        case "504b34" :              $type = 'application/zip; charset=binary';              break;        case "89504e47" :            $type = 'image/png; charset=binary';              break;         default :            $type = false;              break;    }    return $type;}

登录后复制

说明: 这个方法有缺陷,不同类型的文件,文件头4个字节可能会相同,并且部分文件类型表示文件类型的字符串,少于4个字节。可以考虑将方法三和方法四结合使用。

以上就是php如何判断文件类型的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2153302.html

(0)
上一篇 2025年2月25日 06:01:51
下一篇 2025年2月22日 19:45:03

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php如何命名变量

    php语言中的变量 php数据存储单元是变量和常量存储各种类型的数据,php是一种弱类型的语言,使用变量前不用声明变量,赋值时就是创建了变量,这个原因使的php语法和c语言、java(强类型语言)有很大的不同。(推荐学习:PHP编程从入门到…

    2025年2月25日
    200
  • php如何开启pdo

    pdo(php data object)扩展在php5中加入,php6中将默认识用pdo连接数据库,所有非pdo扩展将会在php6被从扩展中移除。 该扩展提供PHP内置类 PDO来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连接…

    2025年2月25日
    200
  • php如何加密

    Zend Guard Zend Guard只能对带有PHP标记或源码的文件进行加密(如:.php,inc等),对于其他不带有PHP标记的文本方式保存的文件不能进行加密操作,支持期限,注册码。(推荐学习:PHP编程从入门到精通) 支持PHP4…

    2025年2月25日
    200
  • php如何获取用户的ip地址

    ip地址: internet协议地址(ip地址)是分配给连接到使用internet协议进行通信的计算机网络的每个设备的数字标签。ip地址有两个主要功能:主机或网络接口标识和位置寻址。 $_SERVER[‘REMOTE_ADDR&…

    2025年2月25日
    200
  • php获取文件大小

    对于初入门的php新手来说,php获取文件大小这个功能实现,或许有一定的难度。但是相信新手小白们在看过本篇文章介绍后,一定能轻松掌握php获取文件大小的重要知识! 下面我们通过具体的代码示例,为大家详细的分析介绍PHP获取文件大小的方法。 …

    2025年2月25日 编程技术
    200
  • php如何获取当前时间

    date/time 函数允许您从 php 脚本运行的服务器上获取日期和时间。您可以使用 date/time 函数通过不同的方式来格式化日期和时间。 注:这些函数依赖于服务器的本地设置。使用这些函数时请记住要考虑夏令时和闰年。 PHP Dat…

    2025年2月25日
    200
  • PHP如何获取表单提交的数据

    php如何获取表单提交的数据 1、超全局数组变量:$_GET[] 描述:获取表单 method = “get” 提交的数据 举例:$username = $_GET[“username”]; 立即学习“PHP免费学习笔记(深入)”; 2、超…

    2025年2月25日
    200
  • PHP如何和JAVA相融入

    jphp是一个基于javavm的php编译器。 类似 javac ,可将 php 源码编译成 jvm 的字节码并在 jvm 中执行。 支持 PHP (5.6+)的诸多特性,JDK 1.6+, 支持Android平台。  作者表示JPHP并不…

    2025年2月25日
    200
  • php三目运算符怎么用

    1、三目运算符格式:(expr1) ? (expr2) : (expr3) 2、逻辑运算 注:加减运算记得加括号,不然系统有些时候不能认出。 例子: 立即学习“PHP免费学习笔记(深入)”; <?php /** * Created b…

    2025年2月25日
    200
  • php什么情况内存泄露

    情况一、程序操作数据过大 情景还原:一次性读取超过php可用内存上限的数据导致内存耗尽 <?php ini_set('memory_limit', '128M');$string = str_p…

    2025年2月25日
    200

发表回复

登录后才能评论