当前位置: 首页 > article >正文

PHP 中的文件读写与上传

PHP 中的文件读写与上传判断与信息获取判断文件函数说明返回值file_exists($path)判断文件或目录是否存在boolis_file($path)判断是否是文件boolis_dir($path)判断是否是目录boolis_readable($path)判断是否可读boolis_writable($path)判断是否可写bool?php$file./config.php;$dir./logs;// 1. 判断文件是否存在if(file_exists($file)){echo文件存在br;// 2. 判断是否是文件if(is_file($file)){echo这是一个文件br;}}// 3. 判断目录是否存在且可写if(is_dir($dir)is_writable($dir)){echo目录存在且可写br;}?获取文件信息函数说明filesize($path)获取文件大小字节filemtime($path)获取文件最后修改时间时间戳pathinfo($path)获取文件路径信息目录、文件名、后缀?php$file./photo.jpg;// 获取文件大小$sizefilesize($file);echo文件大小.round($size/1024,2). KBbr;// 获取最后修改时间$mtimefilemtime($file);echo最后修改时间.date(Y-m-d H:i:s,$mtime).br;// 获取路径信息$infopathinfo($file);echo文件名.$info[filename].br;echo后缀名.$info[extension].br;echo目录.$info[dirname].br;?文件读写简单方式file_get_contents()/file_put_contents()// 读取文件内容到字符串$contentfile_get_contents(string$filename);// 将字符串写入文件返回写入的字节数file_put_contents(string$filename,mixed$data,int$flags0);读取 JSON 配置文件?php// 假设 config.json 内容{db_host: localhost, db_user: root}$jsonfile_get_contents(./config.json);$configjson_decode($json,true);// 转数组echo数据库主机.$config[db_host];// 数据库主机localhost?写入日志文件追加模式?php// 日志内容$log[.date(Y-m-d H:i:s).] 用户登录成功\n;// FILE_APPEND追加写入不覆盖原内容// LOCK_EX独占锁防止多人同时写入导致数据混乱file_put_contents(./logs/app.log,$log,FILE_APPEND|LOCK_EX);?底层方式fopen()/fwrite()/fclose()当你需要逐行读取、写入大文件或更精细的控制时使用这组函数。// 打开文件返回资源句柄$handlefopen(string$filename,string$mode);// 写入文件fwrite(resource$handle,string$data);// 读取一行$linefgets(resource$handle);// 关闭文件fclose(resource$handle);常用 mode 参数模式说明r只读指针在开头w只写清空文件内容指针在开头a追加指针在末尾r读写指针在开头逐行读取大文件不占内存?php// 打开一个大文件比如 1GB 的日志$handlefopen(./large_file.log,r);if($handle){// 逐行读取直到文件结束while(($linefgets($handle))!false){// 处理每一行比如过滤错误日志if(strpos($line,ERROR)!false){echo发现错误.$line.br;}}fclose($handle);}?目录操作创建、删除与遍历函数说明mkdir($path)创建目录rmdir($path)删除空目录unlink($path)删除文件递归创建多级目录?php// 要创建的目录路径$dir./uploads/2023/10/01;// mkdir 第三个参数 true递归创建父目录if(!is_dir($dir)){mkdir($dir,0755,true);echo目录创建成功;}?遍历目录scandir()简单遍历适合单层目录?php$dir./uploads;// 获取目录下所有文件和目录包含 . 和 ..$filesscandir($dir);// 遍历并过滤掉 . 和 ..foreach($filesas$file){if($file!.$file!..){// 判断是文件还是目录$typeis_file($dir./.$file)?文件:目录;echo$type..$file.br;}}?RecursiveDirectoryIterator递归遍历适合多层目录?php$dir./uploads;// 使用递归迭代器$iteratornewRecursiveIteratorIterator(newRecursiveDirectoryIterator($dir,RecursiveDirectoryIterator::SKIP_DOTS),RecursiveIteratorIterator::SELF_FIRST);foreach($iteratoras$file){// $file 是 SplFileInfo 对象echo路径.$file-getPathname(). - 大小.$file-getSize(). 字节br;}?文件上传 图片上传文件上传是 Web 开发的经典需求PHP 通过$_FILES超全局变量和move_uploaded_file()函数处理。formactionupload.phpmethodpostenctypemultipart/form-data选择图片inputtypefilenameavataracceptimage/*inputtypesubmitvalue上传/form?php// 检查是否有上传错误if($_FILES[avatar][error]!UPLOAD_ERR_OK){exit(上传错误.$_FILES[avatar][error]);}// 定义上传目录$uploadDir./uploads/;if(!is_dir($uploadDir)){mkdir($uploadDir,0755,true);}// 获取文件后缀生成唯一文件名$extpathinfo($_FILES[avatar][name],PATHINFO_EXTENSION);$filenameuniqid()...$ext;$destPath$uploadDir.$filename;// 验证文件类型简单验证只允许图片$allowedTypes[jpg,jpeg,png,gif];if(!in_array(strtolower($ext),$allowedTypes)){exit(只允许上传图片文件);}// 验证文件大小限制 2MBif($_FILES[avatar][size]2*1024*1024){exit(文件大小不能超过 2MB);}// 从临时目录移动到目标目录if(move_uploaded_file($_FILES[avatar][tmp_name],$destPath)){echo上传成功文件路径.$destPath;}else{exit(文件移动失败);}?

相关文章:

PHP 中的文件读写与上传

PHP 中的文件读写与上传 判断与信息获取 判断文件函数说明返回值file_exists($path)判断文件或目录是否存在boolis_file($path)判断是否是文件boolis_dir($path)判断是否是目录boolis_readable($path)判断是否可读boolis_writable($path)判断是否可写bool<?php $file ./co…...

MGeo中文地址解析惊艳效果:‘宁夏银川市金凤区宁安大街490号银川市民大厅’11字段精准输出

MGeo中文地址解析惊艳效果&#xff1a;‘宁夏银川市金凤区宁安大街490号银川市民大厅’11字段精准输出 1. 引言&#xff1a;从混乱文本到精准结构&#xff0c;地址解析的魔力 想象一下&#xff0c;你收到一条用户留言&#xff1a;“麻烦送到银川市民大厅&#xff0c;在金凤区…...

告别VS手动配置!用Premake5+Lua脚本一键生成C++项目(附多平台实战案例)

告别VS手动配置&#xff01;用Premake5Lua脚本一键生成C项目&#xff08;附多平台实战案例&#xff09; 每次新建C项目时&#xff0c;你是否也厌倦了在Visual Studio中重复点击那些繁琐的配置选项&#xff1f;从平台工具集到运行时库&#xff0c;从包含目录到预处理器定义&…...

ubuntu20.04设置开机自动登录适用与GNOME桌面环境

默认arm版本ubuntu20.04未安装nano编辑器&#xff0c;so我们要安装一下&#xff0c; sudo apt update && sudo apt install nano设置方法&#xff1a; sudo nano /etc/gdm3/custom.conf添加或修改&#xff0c;用户名区分大小写。 AutomaticLoginEnableTrue AutomaticLo…...

双指针-11. 盛最多水的容器

文章目录1.题解2.机考代码3.知识点讲解1.异向双指针力扣地址&#xff1a; 中等&#xff1a;11. 盛最多水的容器1.题解 class Solution {public int maxArea(int[] height) {int maxarea 0, l 0, r height.length - 1;while(l < r){maxarea Math.max(maxarea, Math.min(…...

告别淘宝任务重复操作,让日常收益自动完成

告别淘宝任务重复操作&#xff0c;让日常收益自动完成 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本&#xff0c;包含蚂蚁森林收取能量&#xff0c;芭芭农场全任务&#xff0c;解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/taojinbi 你是否每天早上睁…...

DAMOYOLO-S惊艳效果:低分辨率监控截图中识别车牌区域与行人姿态

DAMOYOLO-S惊艳效果&#xff1a;低分辨率监控截图中识别车牌区域与行人姿态 你有没有遇到过这样的场景&#xff1f;从一段模糊的监控录像里截了一张图&#xff0c;想看清车牌号码&#xff0c;但画面糊得跟打了马赛克一样。或者&#xff0c;想分析一下画面里行人的姿态&#xf…...

华为,华三交换机开启snmp的命令

华为&#xff0c;华三交换机开启snmp的命令 配置community指定版本为v2c, v3&#xff08;支持这2个版本&#xff09;指定源接口 snmp-agent snmp-agent community read public snmp-agent sys-info version v2c v3 snmp-agent protocol source-interface MEth0/0/0配置完成后&a…...

常见开源软件协议介绍

在当今数字化时代&#xff0c;开源软件如同一股洪流&#xff0c;席卷了整个技术领域。从我们日常使用的操作系统&#xff0c;到复杂的大数据处理框架&#xff0c;开源软件无处不在。然而&#xff0c;在这繁荣的开源生态背后&#xff0c;有一群默默守护规则的 “卫士”&#xff…...

能耗监控系统:OpenClaw+GLM-4-7-Flash分析家庭用电报告

能耗监控系统&#xff1a;OpenClawGLM-4-7-Flash分析家庭用电报告 1. 为什么需要本地化的能耗监控系统 去年夏天&#xff0c;我家电费账单突然比平时高出40%。当我尝试用市面上的智能电表分析工具时&#xff0c;发现需要将用电数据上传到第三方平台才能生成报告——这意味着我…...

智能驾驶中的惯性导航:从L2到L4的IMU选型指南(2023最新)

智能驾驶中的惯性导航&#xff1a;从L2到L4的IMU选型指南&#xff08;2023最新&#xff09; 当特斯拉Model 3在隧道中失去GPS信号时&#xff0c;车载IMU仍能保持厘米级定位精度——这背后是惯性导航技术在自动驾驶领域的革命性应用。不同于消费级电子设备中仅用于计步的简易传感…...

别再让模型路径打架了!手把手教你用Simulink Project管理多项目(附MATLAB 2023b实操)

多项目并行开发利器&#xff1a;Simulink Project高效管理实战指南 在复杂的模型开发环境中&#xff0c;工程师们常常面临这样的困境&#xff1a;当你正专注于某个汽车电控单元的开发时&#xff0c;突然接到另一个航天器控制系统项目的紧急修改需求。匆忙切换工作目录后&#x…...

网页聊天室--测试报告

一.测试目标及测试任务概括验证网页聊天室各模块的功能完整性&#xff0c;确保用户的登录功能&#xff0c;注册功能&#xff0c;以及首页的聊天会话和好友列表&#xff0c;添加好友的功能符合要求。二.测试文档类别版本/配置硬件荣耀MagicBook 14手动测试浏览器Microsoft Edge …...

CnDataSeed 发布:中国城市公共服务空间匹配数据库(CUSMD)

一、数据简介透视城市公共服务供需格局&#xff0c;量化空间公平与发展质量&#xff01;在城市高质量发展与共同富裕持续推进的背景下&#xff0c;公共服务体系的评价标准正在从“资源供给规模”逐步转向“居民真实可达体验”。教育、医疗、文化体育、交通与公共安全等公共服务…...

昇腾算子开发知识地图

作者&#xff1a;昇腾实战派 背景 本博客旨在对社区发表的昇腾算子相关博客进行整理归类&#xff0c;方便用户导航使用&#xff1b;以下文章所用的机器均为昇腾相关设备。 Ascend C 基础理论 Ascend C基础 Ascend C算子开发详解&#xff1a;从原理到实战的深度剖析 深入A…...

3步解锁全网资源:res-downloader实战手册

3步解锁全网资源&#xff1a;res-downloader实战手册 【免费下载链接】res-downloader 资源下载器、网络资源嗅探&#xff0c;支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gitcode.com/GitHub_Tren…...

总担心家人生病?心理学教你摆脱 “灾难化思维”

父母晚回半小时&#xff0c;孩子轻微咳嗽&#xff0c;伴侣说头晕…… 你是不是瞬间脑补出无数可怕画面&#xff0c;越想越慌&#xff0c;直到拨通电话才安心&#xff1f;这不是矫情&#xff0c;是灾难化思维在作祟。一、为什么总担心家人生病&#xff1f;3个深层根源对失去的恐…...

QWEN-AUDIO应用案例:如何制作一个会讲故事的AI语音玩具

QWEN-AUDIO应用案例&#xff1a;如何制作一个会讲故事的AI语音玩具 1. 项目背景与创意来源 1.1 儿童教育市场的语音需求 在当今儿童教育领域&#xff0c;互动性和趣味性成为产品设计的关键要素。传统的故事机往往只能播放预录制的音频内容&#xff0c;缺乏个性化和互动能力。…...

Qwen3-TTS-12Hz-1.7B-VoiceDesign实操手册:语音质量评估指标与主观打分

Qwen3-TTS-12Hz-1.7B-VoiceDesign实操手册&#xff1a;语音质量评估指标与主观打分 你辛辛苦苦用Qwen3-TTS生成了几段语音&#xff0c;听起来感觉还不错&#xff0c;但心里总有点没底——这声音到底算好还是不好&#xff1f;有没有一个客观的标准来衡量&#xff1f;如果让你给…...

英语体育比赛口语

一、看比赛1. 邀约看球中文英文今晚有比赛&#xff0c;一起看吗&#xff1f;Theres a game tonight. Want to watch together?你看了昨晚的比赛吗&#xff1f;Did you watch the game last night?决赛什么时候&#xff1f;When is the final?我们去酒吧看球吧&#xff01;Le…...

【专栏一:AI基础01】-【一张图讲清楚什么是大模型】

专栏一&#xff1a;AI基础入门-什么是大模型&#xff1f;大模型通俗解释大模型通俗解释 我们可以把大模型想象成一个超级大脑&#xff1a; 它在诞生之初&#xff0c;会先阅读人类海量的文字、知识、书籍、网页、对话&#xff0c;把所有信息消化成一套庞大的数学规律和语言逻辑&…...

Mermaid:文本驱动的数据可视化效率革命与全场景适配指南

Mermaid&#xff1a;文本驱动的数据可视化效率革命与全场景适配指南 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器&#xff0c;支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流…...

告别鼠标拖拽:用Mermaid重新定义技术图表创作流程

告别鼠标拖拽&#xff1a;用Mermaid重新定义技术图表创作流程 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器&#xff0c;支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程图的…...

Android设备Root完全指南:从入门到精通

Android设备Root完全指南&#xff1a;从入门到精通 【免费下载链接】Magisk The Magic Mask for Android 项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk 一、认知准备&#xff1a;Root技术基础与风险评估 1.1 Root权限本质解析 Root权限是Android系统中的…...

炉石传说自动化工作流:从智能决策到实战应用的全栈指南

炉石传说自动化工作流&#xff1a;从智能决策到实战应用的全栈指南 【免费下载链接】Hearthstone-Script Hearthstone script&#xff08;炉石传说脚本&#xff09;&#xff08;2024.01.25停更至国服回归&#xff09; 项目地址: https://gitcode.com/gh_mirrors/he/Hearthsto…...

顶会新趋势!GNN结合因果推断,发一区轻轻松松!

因果推断与图神经网络的协同融合&#xff0c;正成为破解图模型可靠性不足、提升泛化能力的核心方向&#xff0c;在图表示学习、企业决策、社交网络分析等领域快速崛起。GNN擅长建模图结构关联&#xff0c;却多聚焦统计关系&#xff0c;难以捕捉真实因果逻辑、易受混杂因素影响&…...

基于构件的软件工程(CBSE)全面解析:从理论到实践

1 CBSE的历史背景与核心理念1.1 起源与发展历程基于构件的软件工程&#xff08;Component-Based Software Engineering&#xff0c;CBSE&#xff09;是20世纪90年代兴起的一种主流软件开发方法论。其核心思想源于软件复用的理念&#xff0c;即通过集成预制的独立功能单元&#…...

提示词工程的应用解析

提示词工程全解析&#xff1a;从入门到精通&#xff0c;让AI精准读懂你的需求[TOC](提示词工程全解析&#xff1a;从入门到精通&#xff0c;让AI精准读懂你的需求)提示词工程全解析&#xff1a;从入门到精通&#xff0c;让AI精准读懂你的需求一、引言&#xff1a;为什么提示词工…...

大比表氧化铈:催化与净化的新利器

你可能没注意到&#xff0c;一种微小的氧化物粉末&#xff0c;却在工业和环保领域发挥着重要作用。它就是大比表氧化铈。它的独特之处在于每克材料拥有非常大的表面积&#xff0c;可达上百平方米&#xff0c;这意味着它能与更多的气体或反应物接触&#xff0c;从而提升化学反应…...

大厂面试必问:Nacos 灵魂 18 问,这篇文章帮你彻底搞定!

从基础概念到CAP原理&#xff0c;从心跳机制到集群部署&#xff0c;一篇搞定Nacos面试在微服务架构大行其道的今天&#xff0c;Nacos 作为阿里巴巴开源的动态服务发现、配置和服务管理平台&#xff0c;已经成为面试中的必考知识点。无论你是刚入行的初级工程师&#xff0c;还是…...