博客列表 >20180828文件名和目录的遍历和文件上传的实现

20180828文件名和目录的遍历和文件上传的实现

乂汁的blog
乂汁的blog原创
2018年09月07日 16:11:101002浏览

一、简介

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

二、作业

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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议