Blogger Information
Blog 19
fans 0
comment 2
visits 18494
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
20180828文件名和目录的遍历和文件上传的实现
乂汁的blog
Original
1003 people have browsed it

一、简介

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

二、作业

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文件时候从最开始就是系统位置错误。不会进入检测环节。

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post