PHP怎样获取文件信息_获取文件大小与类型等【操作】

发布时间 - 2026-01-20 00:00:00    点击率:
PHP获取文件信息有四种方法:一、filesize()和finfo_open()获取大小与真实MIME类型;二、getimagesize()专用于图像宽高及MIME;三、stat()和filetype()组合获取完整属性;四、SplFileInfo类面向对象操作。

如果您需要在PHP中获取文件的基本信息,例如文件大小、类型、最后修改时间等,则可以通过内置函数直接读取文件系统中的元数据。以下是实现此目标的具体方法:

一、使用filesize()和finfo_open()获取文件大小与MIME类型

filesize()函数可准确返回文件的字节数,而finfo_open()结合FILEINFO_MIME_TYPE可探测文件实际内容类型,避免仅依赖扩展名判断带来的误差。

1、使用filesize()获取文件字节数:
echo filesize('/path/to/file.txt');

2、使用finfo_open()检测真实MIME类型:
$finfo = finfo_open(FILEINFO_MIME_TYPE);
echo finfo_file($finfo, '/path/to/file.jpg');

3、使用完毕后关闭资源:
finfo_close($finfo);

二、使用getimagesize()获取图像文件详细信息

getimagesize()专用于图像文件,除返回宽高外,还能提供图像类型常量、MIME类型及exif信息(若存在),适用于需验证并处理图片的场景。

1、调用getimagesize()读取图像元数据:
$info = getimagesize('/path/to/photo.png');

2、提取宽度、高度和MIME类型:
echo $info[0]; // 宽度
echo $info[1]; // 高度
echo $info['mime']; // MIME类型

3、该函数对非图像文件返回false,应提前判断:
if ($info === false) { /* 非图像文件 */ }

三、使用stat()和filetype()组合获取完整文件属性

stat()返回包含文件大小、权限、所有者、访问/修改/状态变更时间等共26个字段的关联数组;filetype()则单独返回文件类型字符串(如file、dir、link),二者配合可全面描述文件状态。

1、调用stat()获取结构化文件信息:
$stats = stat('/path/to/document.pdf');

2、从数组中提取关键字段:
echo $stats['size']; // 文件大小(字节)
echo date('Y-m-d H:i:s', $stats['mtime']); // 最后修改时间
echo substr(sprintf('%o', $stats['mode']), -4); // 八进制权限

3、使用filetype()确认文件类别:
echo filetype('/path/to/document.pdf'); // 输出 'file'

四、使用SplFileInfo类面向对象方式获取文件信息

SplFileInfo是PHP标准库中专用于文件信息操作的类,封装了多种获取路径、大小、类型、时间的方法,代码更清晰且支持链式调用。

1、实例化SplFileInfo对象:
$file = new SplFileInfo('/path/to/data.json');

2、调用方法获取各项属性:
echo $file->getSize(); // 文件大小
echo $file->getType(); // 文件类型(file/dir/lnk等)
echo $file->getMimeType(); // MIME类型(需ext-fileinfo启用)

3、获取格式化的时间戳:
echo $file->getMTime(); // 最后修改时间戳
echo $file->getBasename(); // 基础文件名(含扩展名)


# php  # js  # json  # 字节  # pdf  # 标准库  # echo  # 常量  # if  # 关联数组  # 面向对象  # 封装  # date  # 字符串  # 对象  # 扩展名  # 链式  # 还能  # 适用于  # 四种  # 则可  # 您需要  # 装了  # 文件系统 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  如何快速查询域名建站关键信息?  Laravel如何使用Collections进行数据处理?(实用方法示例)  如何选择PHP开源工具快速搭建网站?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何在搬瓦工VPS快速搭建网站?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Laravel如何使用Sanctum进行API认证?(SPA实战)  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  海南网站制作公司有哪些,海口网是哪家的?  百度浏览器如何管理插件 百度浏览器插件管理方法  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  Laravel如何实现用户密码重置功能?(完整流程代码)  如何在云虚拟主机上快速搭建个人网站?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  详解MySQL数据库的安装与密码配置  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  什么是javascript作用域_全局和局部作用域有什么区别?  怎样使用JSON进行数据交换_它有什么限制  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  详解阿里云nginx服务器多站点的配置  如何快速搭建个人网站并优化SEO?  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  Laravel怎么清理缓存_Laravel optimize clear命令详解  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  如何用AWS免费套餐快速搭建高效网站?  如何在新浪SAE免费搭建个人博客?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Laravel如何使用查询构建器?(Query Builder高级用法)  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  教学论文网站制作软件有哪些,写论文用什么软件 ?  Python数据仓库与ETL构建实战_Airflow调度流程详解  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  网站页面设计需要考虑到这些问题  如何快速搭建高效香港服务器网站?  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  如何快速搭建高效WAP手机网站?