0

0

PHP学习笔记--文件目录操作(文件上传实例)

php中文网

php中文网

发布时间:2016-06-23 14:37:24

|

1310人浏览过

|

来源于php中文网

原创

文件操作是每个语言必须有的,不仅仅局限于php,这里我们就仅用php进行讲解

php的文件高级操作和文件上传实例我放在文章的最后部分。--以后我还会给大家写一个PHP类似于网盘操作的例子

注意:阅读此文章,必须的备一个 《PHP中文手册》或者其它可以查询PHP函数的手册 因为文章有大量的示例,但是为了节约篇幅和时间,所以请大家自行查阅PHP手册,以明白函数的具体作用

1、php打开文件和关闭文件

  用到的函数 fopen() 、fclose()  注:打开的文件一定要关闭! 具体函数参数请查阅php手册

立即学习PHP免费学习笔记(深入)”;

 实例:

<?php            $fopen = fopen("fun.txt","rb");            /* ...文件的其他操作 */            fclose($fopen);        ?>

View Code

fopen()函数在php5中也支持url格式:

<?php    $fopen = fopen("http://www.baidu.com","rb");    while(!feof($fopen))    {        echo fgets($fopen);        }    fclose($fopen);?>

View Code

2、PHP的文件读写

  读操作-

    用到的函数 readfile()、file()、file_get_contents()、fgets()、fgetss()、fgetc()

    示例中的文件位置请根据自己的文件进行更改,不要纠结文件位置和文件名什么的。重点在学习

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>文件测试</title></head><body><!--不需要打开文件读取--><table width="500" border="1" cellpadding="0" cellspacing="0">    <tr>        <td width="253" height="100" align="right" valign="middle" scope="col">使用 readfile()函数读取文件内容:        </td>        <td width="241" height="100" align="center" valign="middle" scope="col">        <!-- 使用readfile()函数读取ee.txt文件内容 -->        <?php readfile("ee.txt"); ?>        </td>    </tr>    <tr>        <td height="100" align="right" valign="middle">使用 file()函数读取文件内容:        </td>        <td height="100" align="center" valign="middle">        <!-- 使用file()函数读取ee.txt文件内容 -->        <?php            $f_arr = file("ee.txt");            foreach($f_arr as $cont)            {                echo $cont."<br />";            }        ?>        </td>    </tr>    <tr>        <td width="250" height="25" align="right" valign="middle" scope="col">使用 file_get_contents()函数读取文件内容:        </td>        <td height="25" align="center" valign="middle" scope="col">        <!-- 使用file_get_contents()函数读取ee.txt文件内容 -->        <?php            $f_chr = file_get_contents("ee.txt");            echo $f_chr;        ?>        </td>    </tr></table><!--需要打开文件流读取--><table border="1" cellpadding="0" cellspacing="0">    <tr>        <td align="right" valign="middle" scope="col">使用fgets()函数:</td>        <td align="center" valign="middle" scope="col">        <!--使用fgets()函数读取-->        <?php            $fopen = fopen("fun.txt","rb");  //打开文件            while(!feof($fopen))  //feof()函数测试指针是否到了文件结束的位置            {                echo fgets($fopen);        //输出当前行                }            fclose($fopen);  //关闭文件        ?>        </td>    </tr>    <tr>        <td align="right" valign="middle" >使用fgetss()函数:</td>        <td align="center" valign="middle">        <!--使用fgetss()函数读取-->        <?php            $fopen = fopen("fun.txt","rb");            while(!feof($fopen))  //feof()函数测试指针是否到了文件结束的位置            {                echo fgetss($fopen); //输出当前行            }            fclose($fopen);        ?>        </td>    </tr>    <tr>        <td align="right" valign="middle" >使用fgetc()函数:</td>        <td align="center" valign="middle">        <!--使用fgetss()函数读取-->        <?php            $fopen = fopen("ee.txt","rb");  //创建文件资源。打开文件流            while(false !== ($chr = fgetc($fopen)))  //使用fgetc()函数取得一个字符串,判断是否为false            {                echo $chr;   //如果不是,输出该字符            }            fclose($fopen); //关闭文件资源        ?>        </td>    </tr></table></body></html>

View Code

     写操作-

    用到的函数 fwrite()、 file_put_contents()

<?php/*    $filename = "ee.txt"; //要读取的文件    $fp = fopen($filename,"rb"); //打开文件    echo fread($fp,6);  //使用 fread() 函数读取文件内容的前32个字节    echo "<p>";    echo fread($fp,filesize($filename)); //输出其余的文件内容    */    $filepath = "05.txt";    $str = "此情可待成追忆   只是当时已惘然<br />";    echo "用 fwrite() 函数写入文件: ";    $fopen = fopen($filepath,"wb") or die("文件不存在");    fwrite($fopen,$str);    fclose($fopen);    readfile($filepath);    echo "<p>用 file_put_contents() 函数写入文件: ";    file_put_contents($filepath,$str);    readfile($filepath);?>

View Code

 3、php文件本身的操作

       本示例只是列举函数,请不要直接运行。运行前请根据自己的需求更改

<?php    date_default_timezone_set('Asia/Shanghai');  //PHP5以上版本支持 --时区的设置,一会儿会有涉及到时间    //php文件操作 --本示例只是列举函数,请不要直接运行。运行前请根据自己的需求更改        /*用rename()函数文件重命名*/    rename("123.txt","321.txt");        /*用copy()函数 复制文件*/    copy("ee.txt","upfile/ee.txt");        /*用unlink()函数 删除文件*/    unlink("321.txt");        /*用fileatime()函数 返回文件最后一次访问的时间 --默认是以unix时间戳来访问的*/    echo "Last access time: ".date("Y-m-d H:i:s",fileatime("ee.txt"));        /*用filemtime()函数 返回文件最后一次被修改的时间 --默认是以unix时间戳来访问的*/    echo "Last modified time: ".date("Y-m-d H:i:s",filemtime("ee.txt"));        /*用filesize() 函数取得文件大小 以字节数显示*/    echo filesize("ee.txt");        /*用pathinfo() 函数获取文件信息 包括路径、类型、名字等*/    print_r(pathinfo("ee.txt"));        /*用realpath() 函数返回文件的绝对路径*/    echo realpath("ee.txt");        /*用stat() 函数返回文件的相关信息。如大小、最后修改时间等等*/    print_r(stat("ee.txt"));?>

View Code

 ===================================================================

一、php目录操作

     和文件操作类似,也要打开关闭目录 用opendir()、和closedir()函数进行打开和关闭目录

外卖吧1.0
外卖吧1.0

一、本站采用PHP+mysql,核心程序使用了kingcms PHP版,重新设计了模板界面,增加了一些操作功能,方便外卖同行可以很好的展示宣传自己的外卖产品。本套源码的模板可以随意共享传播,程序版权仍归Kingcms所有。 二、网站部署操作: 第一步:将“upload”文件夹的所有文件上传到网站的根目录下。 第二步:在数据库管理后台创建好数据库并将源码中的“mysql”文件夹里的文件导入到数据库中

下载

<?php    $path = "D:/user/test";    //路径应为 "/" 而不是 "\"    if(is_dir($path))        //检测是否是一个目录    {        if($dire = opendir($path))  //判断打开目录是否成功        {            echo $dire;            //输出目录指针        }    }    else    {        echo '路劲错误';        exit();    }    closedir($dire);    //关闭目录?>

View Code

二、php目录的游览

     核心函数 scandir()

<?php    $path = "D:/user";   //要游览的目录    if(is_dir($path))    {        $dir = scandir($path);        //使用scandir() 函数取得所有文件及目录        foreach($dir as $value)        //使用foreach循环遍历        {            echo iconv("gbk","utf-8",$value);  //转换编码。            echo "<br />";        }    }    else    {        echo "目录路径错误!";        }?>

View Code

三、php目录的其他操作,获取磁盘目录大小,新建删除目录等等

本示例只是列举函数,请不要直接运行。运行前请根据自己的需求更改

<?php    /*本示例只是列举函数,请不要直接运行。运行前请根据自己的需求更改*/    /*用mkdir() 函数新建一个指定目录*/    mkdir("tt");        /*用rmdir()函数 删除一个指定的目录,前提是目录必须是空的*/    rmdir("tt");        /*用getcwd()函数 获取当前工作的目录*/    echo getcwd();        /*用chdir() 函数更改当前目录为工作目录*/    echo getcwd();    echo "<br />";    chdir("../");  //更改为返回上一级    echo getcwd(); //重新获取当前目录        /*用disk_free_space()函数 返回目录中的可用空间*/    echo disk_free_space("D:/")/pow(1024,3);  //这里换算成了G、默认是以字节显示的        /*用disk_total_space()函数 返回目录中的可用空间*/    echo disk_total_space("D:/")/pow(1024,3);  //这里换算成了G、默认是以字节显示的        /*关于PHP5以前的老游览目录的方法 我就不列举了,这里仅仅给出函数名: readdir()、rewinddir()*/?>

View Code

====================================================================

文件的高级运用

文件指针:

<?php    $filename = "ee.txt";    //指定文件路径及文件名    if(is_file($filename))    //判断文件是否存在    {         echo "文件总字节数: ".filesize($filename)."<br />";   //输出总字节数        $fopen = fopen($filename,"rb");    //打开文件 , 以只读的二进制文件格式的去        echo "初始指针位置是: ".ftell($fopen)."<br />";  //输出指针位置        fseek($fopen,3);  //移动指针        echo "使用 fseek() 函数后指针位置: ".ftell($fopen)."<br />"; //输出移动后的指针位置        echo "输出当前指针后面的内容: ".fgets($fopen)."<br />"; //输出从当前指针到行尾的内容        if(feof($fopen))   //判断指针是否指向文件末尾        {            echo "当前指针指向文件末尾: ".ftell($fopen)."<br />";  //如果指向了文件尾,则输出指针位置        }        //使用rewind() 函数返回文档流的开头  --一旦流读到末尾再度就读不到数据了,        //所以这里要重新指向一个文件的指针        rewind($fopen);          //查看使用 rewind() 函数后指针的位置        echo "使用 rewind() 函数后指针的位置: ".ftell($fopen)."<br />";          echo "输出前 6 个字节的内容: ".fgets($fopen,6);  //输出前6个字节的内容        fclose($fopen);  //关闭文件    }    else    {        echo "文件不存在!";        }?>

View Code

文件锁定:

<?php    $filename = '05.txt';   //声明要打开文件名称    $fopen = fopen($filename,'w');   //以w 只写的形式打开文件    flock($fopen,LOCK_EX);   //锁定文件 (独占共享)    fwrite($fopen,"hightman1");  //向文件中写入数据    flock($fopen,LOCK_UN);  //解除锁定    fclose($fopen);  //关闭文件指针    readfile($filename);   //输出文件内容?>

View Code

====================================================================

文件的上传

获取上传文件的信息:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><body>    <table width="500" border="0" cellpadding="0" cellspacing="0">        <!-- 上传文件的form表单,必须有 enctype 属性 -->        <form enctype="multipart/form-data" action="" method="post">            <tr>                <td width="150" height="30" align="right" valign="middle">请选择上传文件: </td>                <!-- 上传文件域,type类型为file -->                <td width="250"><input type="file" style="border:1px solid #000" name="upfile" /></td>                <!-- 提交按钮 -->                <td width="100"><input type="submit" name="submit" value="上传" /></td>            </tr>        </form>    </table>    <?php        if(!empty($_FILES))  //检查变量是否为空        {            foreach($_FILES['upfile'] as $name=>$value)  //使用foreach循环输出上传文件信息的名称和值            {                echo $name.'='.$value."<br />";            }        }    ?></body></html>

View Code

真正的文件上传(从临时到指定位置):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><body>    <form action="" method="post" enctype="multipart/form-data" name="form">        <input name="up_file" type="file" />        <input type="submit" name="submit" value="上传" />      </form>    <?php        if(!empty($_FILES['up_file']['name']))  //判断是否有上传文件        {            $fileinfo = $_FILES['up_file'];  //将文件信息赋给fileinfo            if($fileinfo['size'] < 901 && $fileinfo['size'] > 0)  //判断文件大小            {                //上传文件                move_uploaded_file($fileinfo['tmp_name'],"upfile/".$fileinfo['name']);                echo "文件上传成功!";            }            else            {                echo "文件太大或者未知";                }        }    ?></body></html>

View Code

多文件上传:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><body>    <form action="" method="post" enctype="multipart/form-data">        <table id="up_table" border="1" bgcolor="#f0f0f0">            <tbody id="auto">                <tr id="show">                    <td>上传文件</td>                    <td><input type="file" name="u_file[]" /></td>                </tr>                <tr>                    <td>上传文件</td>                    <td><input type="file" name="u_file[]" /></td>                </tr>                <tr>                    <td colspan="4"><input type="submit" value="上传" /></td>                </tr>            </tbody>        </table>    </form>    <?php        if(!empty($_FILES['u_file']['name']))  //判断$FILES变量是否为空        {            $file_name = $_FILES['u_file']['name']; //将上传的临时文件名存放在数组里            $file_tmp_name = $_FILES['u_file']['tmp_name']; //将上传的临时文件路径存放数组            for($i = 0; $i<count($file_name); $i++)  //循环上传文件            {                if($file_name[$i] != '')   //判断上传文件名是否为空                {                    move_uploaded_file($file_tmp_name[$i],"upfile/".$i.$file_name[$i]);                    echo "文件".$file_name[$i]."上传成功, --更名为".$i.$file_name[$i]."<br />";                }            }        }    ?></body></html>

View Code

 

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

928

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

307

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

183

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

29

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

103

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

54

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

17

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

764

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

92

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
微信小程序开发--云开发篇
微信小程序开发--云开发篇

共15课时 | 0.8万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

第三期培训_PHP开发
第三期培训_PHP开发

共116课时 | 26.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号