php判断文件是否为txt文件
可以使用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文件的更多相关文章
- iOS之使用QLPreviewController打开文件,处理txt文件出现乱码的情况
iOS之使用QLPreviewController打开文件,处理txt文件出现乱码的情况 主要代码: - (id <QLPreviewItem>)previewController:(QL ...
- Android 读取assets文件下的txt文件
android 读取assets文件下的txt文件,解决了读取txt文件的乱码问题: package com.example.com.scrollview; import java.io.Buffer ...
- JAVA读取TXT文件、新建TXT文件、写入TXT文件
1.创建TXT文件 按照正常的逻辑写就好 先定义一个文件给定一个路径——>判断这个路径上这个文件存不存在——>若不存在则建立,try/catch根据程序提示自动生成就好 2.读取TXT文件 ...
- Python文件复制(txt文件)
功能:这个py脚本是把一个txt文件(源文件)复制到另一个txt文件(目的文件)里面 算法思路: 程序首先判断源文件(用exists函数判断)和目的文件是否存在,如果不存在则输出文件路径不存在,如果存 ...
- (qsf文件 、 tcl文件 和 csv(txt)文件的区别) FPGA管脚分配文件保存、导入导出方法
FPGA管脚分配文件保存方法 使用别人的工程时,有时找不到他的管脚文件,但可以把他已经绑定好的管脚保存下来,输出到文件里. 方法一: 查看引脚绑定情况,quartus -> assignment ...
- Java读取txt文件和写入txt文件
package com.nickwong.code; import java.io.*; /** * Created by Nickwong on 31/07/2018. * 根据1-8楼的建议,优化 ...
- 树莓派ubuntu系统下修改config.txt文件 树莓派config.txt文件修改记录
原文:https://www.raspberrypi.org/documentation/configuration/config-txt.md译文:http://my.oschina.net/fun ...
- Mac新建文件夹、txt文件、无格式文件
新建文件夹: mkdir test 新建txt touch test.txt 新建无后缀格式文件 touch test 如果要删除文件夹 rm -r -f test
- CMD命令行合并多个txt文件到一个txt文件
运行->输入CMD回车 输入: Copy G:\MyFolder\*.txt G:\NewFolder\a.txt 回车即可 意思是将G:\MyFolder\下的所有txt文本内容复制到G:\ ...
随机推荐
- [HihoCoder-1424] Asa's Chess Problem
有上下界的费用流 #include <stdio.h> #include <algorithm> #include <queue> #include <cst ...
- 关于@JsonFormat(出参格式化)和@DateTimeFormat(入参格式化)
背景: 从数据库查询获取数据时候 返回的json数据 日期会出现一串数字或者其他形式 和我们期待的不一样 如下图: 一开始使用@DateTimeFormat注解 但是输出结果和没有使用返回的jso ...
- 2.2注册中心:Eureka
pom.xml配置 <?xml version="1.0" encoding="UTF-8"?><project xmlns="ht ...
- java--键盘输入任意数字进行求和
思路,我将键盘输入的数放入数组,然后便利数组进行求和 package com.test.day01; import java.util.Scanner; public class Test { pub ...
- pycharm配置git版本管理
1.下载并安装git 首先你电脑必须安装git版本控制器(软件),在官网下载即可 2.安装git,正常安装即可 编缉器的选择,根据电脑实际情况选择合适的编缉器 安装参考:https://www.cnb ...
- Photon Server LoadBalancing搭建
准备:申请3台Windows虚拟机. 3台虚拟机上都部署上Photon Server. 一.主虚拟机上部署MasterServer. (1)在第一台虚拟机中,部署的Photon Server目目录下找 ...
- REST架构中的HTTP动词
POST 增 DELETE 删 PUT 改 GET 查 GET(SELECT):从服务器取出资源(一项或多项). POST(CREATE):在服务器新建一个资源. PUT(UPDATE):在服务器更新 ...
- Memcache与Redis有什么区别?
Redis 和 Memcache 都是基于内存的数据存储系统.Memcached是高性能分布式内存缓存服务,其本质上就是一个内存key-value数据库.Redis是一个开源的key-value存储系 ...
- FLEX AIR 读写安卓本地文件
1. 目标: 将字节流图片保存在安卓本地路径,如 "/data/mypppd/"下, file = File.documentsDirectory.resolvePath(&qu ...
- 【PR笔记】一、打造希区柯克变焦效果
1. 导入素材,“链接选择项”关闭,删除音频 2. 添加效果--视频效果--扭曲--视频稳定器, 然后程序帮我们自动稳定 3.视频首尾添加关键帧,首帧缩放200% 尾帧不变, 使视频前后的主体大小差 ...