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手机网站?

