可以使用pathinfo方法来通过后缀名进行判断文件类型。

/** 

    * 获取文件后缀(如果文件名为11.11,11不是后缀,会默认11为后缀)

    * $file string 文件路径或者文件名

    */

    function get_extension($file){

        return pathinfo($file, PATHINFO_EXTENSION);

    }

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

$_FILES

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

php Fileinfo 获取文件MIME类型(finfo_open)

<?php

    $finfo = finfo_open(FILEINFO_MIME); // 返回 mime 类型

    $filename = '.\Uploads\2.zip';

    var_dump(finfo_file($finfo, $filename));

    finfo_close($finfo);

    die;

说明: 如果文件存在则返回文件类型,否则返回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)=="\xff\xd8\xff") return 'image/jpeg';

        if ($bytes6=="\x89PNG\x0d\x0a") 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判断文件是否为txt文件的更多相关文章

  1. iOS之使用QLPreviewController打开文件,处理txt文件出现乱码的情况

    iOS之使用QLPreviewController打开文件,处理txt文件出现乱码的情况 主要代码: - (id <QLPreviewItem>)previewController:(QL ...

  2. Android 读取assets文件下的txt文件

    android 读取assets文件下的txt文件,解决了读取txt文件的乱码问题: package com.example.com.scrollview; import java.io.Buffer ...

  3. JAVA读取TXT文件、新建TXT文件、写入TXT文件

    1.创建TXT文件 按照正常的逻辑写就好 先定义一个文件给定一个路径——>判断这个路径上这个文件存不存在——>若不存在则建立,try/catch根据程序提示自动生成就好 2.读取TXT文件 ...

  4. Python文件复制(txt文件)

    功能:这个py脚本是把一个txt文件(源文件)复制到另一个txt文件(目的文件)里面 算法思路: 程序首先判断源文件(用exists函数判断)和目的文件是否存在,如果不存在则输出文件路径不存在,如果存 ...

  5. (qsf文件 、 tcl文件 和 csv(txt)文件的区别) FPGA管脚分配文件保存、导入导出方法

    FPGA管脚分配文件保存方法 使用别人的工程时,有时找不到他的管脚文件,但可以把他已经绑定好的管脚保存下来,输出到文件里. 方法一: 查看引脚绑定情况,quartus -> assignment ...

  6. Java读取txt文件和写入txt文件

    package com.nickwong.code; import java.io.*; /** * Created by Nickwong on 31/07/2018. * 根据1-8楼的建议,优化 ...

  7. 树莓派ubuntu系统下修改config.txt文件 树莓派config.txt文件修改记录

    原文:https://www.raspberrypi.org/documentation/configuration/config-txt.md译文:http://my.oschina.net/fun ...

  8. Mac新建文件夹、txt文件、无格式文件

    新建文件夹: mkdir test 新建txt touch test.txt 新建无后缀格式文件 touch test 如果要删除文件夹 rm -r -f test

  9. CMD命令行合并多个txt文件到一个txt文件

    运行->输入CMD回车 输入: Copy G:\MyFolder\*.txt  G:\NewFolder\a.txt 回车即可 意思是将G:\MyFolder\下的所有txt文本内容复制到G:\ ...

随机推荐

  1. 如何判断你的windows系统是32位还是64位?

    [学习笔记] 如 何判断你的windows系统是32位还是64位? java -version时,如果没有64就是32位的.eclipse.ini中如果没有64,就是32位的.但是我们的ini文件里面 ...

  2. 剑指offer42:数组和一个数字S,输出两个数的乘积最小的

    1 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. ...

  3. Python第三方库资源

    [转载]Python第三方库资源   转自:https://weibo.com/ttarticle/p/show?id=2309404129469920071093 参考:https://github ...

  4. PostgreSQL-存储过程

    存储过程其实就是函数,由一组 sql 语句组成,实现比较复杂的数据库操作: 存储过程 是 存储在 数据库服务器 上的,用户可以像调用 sql 自带函数一样 调用存储过程 语法解析 CREATE [OR ...

  5. 微信小程序手动实现select下拉框选择

    在小程序中没有像h5中的下拉 标签的 picker又满足部了,那就自己动手写 <view class='list-msg'> <view class='list-msg1'> ...

  6. Webstorm2017.3.3软件的安装使用

    下载 ▶进入jetbrains的官方网站点击download,即下载开始.官方网站链接:http://www.jetbrains.com/webstorm/ 安装 ▶双击刚下载完成的.exe文件开始进 ...

  7. python 获取导入模块的文件路径

    接触到项目上有人写好的模块进行了导入,想查看模块的具体内容是如何实现的,需要找到模块的源文件. 本博文介绍两种查找模块文件路径方法: 方法一: #!/usr/bin/python # -*- codi ...

  8. Image Processing and Computer Vision_Review:A survey of recent advances in visual feature detection—2014.08

    翻译 一项关于视觉特征检测的最新进展概述——http://tongtianta.site/paper/56761 摘要 -特征检测是计算机视觉和图像处理中的基础和重要问题.这是一个低级处理步骤,它是基 ...

  9. windows 8/10 彻底删除脱机文件

    先关闭脱机文件选项 控制面板 > 同步中心 > 管理脱机文件 > 查看脱机文件 > 点击 计算机 > ... > 脱机同步的文件夹右键,取消同步 可能需要重启 如果 ...

  10. Go测试开发就用这三板斧

    一个古老的面试问题:“给你个XX,你怎么测试?” 时间穿越到9102,Go语言成为了新生代的代名词.老问题变成了“给你Golang程序,你怎么测试?”     看完本文后,读者可以拍着胸脯回答,“一共 ...