博主信息
博文 19
粉丝 0
评论 2
访问量 22824
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
20180828文件名和目录的遍历和文件上传的实现
乂汁的blog
原创
1236人浏览过

一、简介

本节课一共三个问题:文件名和目录的遍历和文件上传的实现。

二、作业

1、目录的遍历

实例

<?php
echo '<h3>目录的遍历</h3>','<hr color="red">';
$dir = opendir('../0827') or die('打开失败');
while (false != ($file = readdir($dir))){
   // print $file;
   //print nl2br($file."\n");
    if ($file != "." && $file != ".."){
        print nl2br($file."\n");
    }
}
closedir($dir);
echo '<hr color="red">';
$fileArray = scandir('../0827/');
//print_r($fileArray);
foreach ($fileArray as $file) {
    if ($file != "." && $file != "..") {
        print nl2br($file . "\n");
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

4.png

2、文件的上传实践

实例

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZA" value="1KB">
    <fieldset>
        <legend align="center">文件上传</legend>
        <p><strong>选择文件</strong><input type="file" name="upload"></p>
    </fieldset>
    <p align="center"><button type="submit" name="submit">就是这个了</button> </p>
</form>


<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    if (isset($_FILES['upload']) && $_FILES['upload']['name'] != ""){
        $allow = ['image/jpg','image/jpeg','image/png'];
        if (in_array($_FILES['upload']['type'],$allow)){
            if (move_uploaded_file($_FILES['upload']['tmp_name'],"upload/{$_FILES['upload']['name']}")){
                echo "<script> alert('文件上传成功')</script> ";

            }

                }else {
            echo "<script> alert('文件格式仅为jpg,jpeg,png')</script>";
            }

    }else {
        echo '<p>错误原因:<strong>';
        switch ($_FILES['upload']['error']){
            case 1:
                echo '文件超过了php.ini配置中设置的大小';
                break;
            case 2:
                echo '文件超过了表单中常量设置的大小';
                break;
            case 3:
                echo '仅有部分文件被上传';
                break;
            case 4:
                echo '没有文件被上传';
                break;
            case 6:
                echo '没有可用的临时文件夹';
                break;
            case 7:
                echo '磁盘已满,写入失败';
                break;
            case 8:
                echo '上传意外中止';
                break;

            default:
                echo '系统未知错误';
                break;

        }
        echo '</strong></p>';
    }

        if (file_exists($_FILES['upload']['tmp_name']) && is_file($_FILES['upload']['tmp_name'])) {
                unlink($_FILES['upload']['tmp_name']);
            }
}
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

5.png6.png7.png

三、总结

文件上传部分存在问题和发现:

1、html部分限制的文件大小没有起作用。

2、业务逻辑中,$_FILES['upload']['error']是在post以后产生的。

3、$_FILES['upload']   用  isset检测是一般一直存在,所以要加入name是否为空的检测。

4、上传MP3文件时候从最开始就是系统位置错误。不会进入检测环节。

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学