php获取文件类型和文件信息的方法


Posted in PHP onJuly 10, 2015

本文实例讲述了php获取文件类型和文件信息的方法。分享给大家供大家参考。具体实现方法如下:

<?php
$file = "php.txt";
//打开文件,r表示以只读方式打开
$handle = fopen($file,"r");
//获取文件的统计信息
$fstat = fstat($handle);
echo "文件名:".basename($file)."<br>";
//echo "文件大小:".round(filesize("$file")/1024,2)."kb<br>";
echo "文件大小:".round($fstat["size"]/1024,2)."kb<br>";
//echo "最后访问时间:".date("Y-m-d h:i:s",fileatime($file))."<br>";
echo "最后访问时间:".date("Y-m-d h:i:s",$fstat["atime"])."<br>";
//echo "最后修改时间:".date("Y-m-d h:i:s",filemtime($file))."<br>";
echo "最后修改时间:".date("Y-m-d h:i:s",$fstat["mtime"]);
?>

何为MIME类型,它是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问时,浏览器会自动使用指定应用程序来打开。
多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

参考链接:php文件格式(mime类型)对照表 。

1、mime_content_type()函数判断获取mime类型
mime_content_type返回指定文件的MIME类型,用法:

echo mime_content_type ( 'php.gif' ) . "\n" ;
echo mime_content_type ( 'test.php' );

输出:
image/gif
text/plain

但是php 5.3.0已经将该函数废弃。如果仍想使用此函数,那么可以对php进行配置启用magic_mime扩展。

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

PHP官方推荐mime_content_type()的替代函数是Fileinfo函数。PHP 5.3.0+已经默认支持Fileinfo函数(fileinfo support-enabled),不必进行任何配置即可使用finfo_open()判断获取文件MIME类型。用法:

$finfo = finfo_open(FILEINFO_MIME);
$mimetype = finfo_file($finfo, $filename);
finfo_close($finfo);

3、image_type_to_mime_type()获取图片MIME类型

如果需要判断MIME类型的文件只有图像文件,那么首先可以使用exif_imagetype()函数获取图像类型常量,再用image_type_to_mime_type()函数将图像类型常量转换成图片文件的MIME类型。
注意:需要在php.ini中配置打开php_mbstring.dll(Windows需要)和extension=php_exif.dll。

4、php上传文件获取MIME类型
如果使用php上传文件,检测上传文件的MIME类型,则可以使用全局变量$_FILES['uploadfile']['type'],由客户端的浏览器检测获取文件MIME类型。

5、通过文件扩展名判断文件类型

<?php 
$filename = "D:\\296.mid"; 
$file = fopen($filename, "rb"); 
$bin = fread($file, 2); //只读2字节 
fclose($file); 
$strInfo = @unpack("c2chars", $bin); 
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']); 
$fileType = ''; 
switch ($typeCode) 
{ 
case 7790: 
$fileType = 'exe'; 
break; 
case 7784: 
$fileType = 'midi'; 
break; 
case 8297: 
$fileType = 'rar'; 
break; 
case 255216: 
$fileType = 'jpg'; 
break; 
case 7173: 
$fileType = 'gif'; 
break; 
case 6677: 
$fileType = 'bmp'; 
break; 
case 13780: 
$fileType = 'png'; 
break; 
default: 
echo 'unknown'; 
} 
echo 'this is a(an) '.$fileType.' file:'.$typeCode; 
?>

以上就是PHP 文件类型判断的几种方法,如果你有更好的方法,可以留言

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP去除数组中重复的元素并按键名排序函数
Aug 18 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
Mar 10 PHP
关于Appserv无法打开localhost问题的解决方法
Oct 16 PHP
php自定义函数之递归删除文件及目录
Aug 08 PHP
PHP中获取变量的变量名的一段代码的bug分析
Jul 07 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
php实现TCP端口检测的方法
Apr 01 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 PHP
Zend Framework路由器用法实例详解
Dec 11 PHP
ecshop添加菜单及权限分配问题
Nov 21 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
基于Laravel 多个中间件的执行顺序详解
Oct 21 PHP
php中实现用数组妩媚地生成要执行的sql语句
Jul 10 #PHP
PHP中把对象数组转换成普通数组的方法
Jul 10 #PHP
codeigniter实现get分页的方法
Jul 10 #PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
Jul 10 #PHP
php基于Snoopy解析网页html的方法
Jul 09 #PHP
php生成固定长度纯数字编码的方法
Jul 09 #PHP
php随机获取金山词霸每日一句的方法
Jul 09 #PHP
You might like
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
php 生成短网址原理及代码
2014/01/23 PHP
PHP常用函数和常见疑难问题解答
2014/03/05 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
JavaScript 常用函数库详解
2009/10/21 Javascript
表格 隔行换色升级版
2009/11/07 Javascript
jquery 之 $().hover(func1, funct2)使用方法
2012/06/14 Javascript
javascript列表框操作函数集合汇总
2013/11/28 Javascript
Seajs的学习笔记
2014/03/04 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
bootstrap multiselect 多选功能实现方法
2017/06/05 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
详解Python的Django框架中的模版继承
2015/07/16 Python
详解Python的三种拷贝方式
2020/02/11 Python
Python中os模块功能与用法详解
2020/02/26 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
初三化学教学反思
2014/01/23 职场文书
主持人演讲稿
2014/05/13 职场文书
详细总结Python常见的安全问题
2021/05/21 Python