Blogger Information
Blog 36
fans 1
comment 0
visits 32372
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP目录遍历_文件上传与检测_2018年8月28日
宋超的博客
Original
528 people have browsed it

实例

<?php
/**
 * 文件或目录相关的系统常量
 */
echo __FILE__ ,'<br>';
//1.获取文件名 带扩展名
echo '文件名', basename(__FILE__),'<br>';
echo '文件名', filesize(__FILE__),'<br>';

//2.获取目录名
echo '目录名:', dirname(__FILE__),'<br>';
//php5.3+,直接使用魔术常量__DIR__
echo __DIR__,'<br><hr><pre>';

//3.pathinfo(),将文件名,目录名,扩展名解析到一个数组中
$pathinfo = pathinfo(__FILE__);
print_r($pathinfo);
echo '目录名:',$pathinfo['dirname'],'<br>';
echo '文件名:',$pathinfo['basename'],'<br>';
echo '扩展名:',$pathinfo['extension'],'<br><hr>';

//DIRECTORY_SEPARATOR 根据系统平台自动变化 返回正/反\斜线 正斜杠,符号是"/";反斜杠,符号是"\"。
//正斜杠,符号是"/";反斜杠,符号是"\"。
//  "../ "   表示当前目录的上级目录,即当前的父目录;
//  "/"      表示网站的根目录;
echo DIRECTORY_SEPARATOR;

$path = dirname(__FILE__).DIRECTORY_SEPARATOR.basename(__FILE__);
echo $path;

运行实例 »

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

1.目录遍历实例

<?php
/**
 * 文件或目录相关的系统常量
 */
echo __FILE__ ,'<br>';
//1.获取文件名 带扩展名
echo '文件名', basename(__FILE__),'<br>';
echo '文件名', filesize(__FILE__),'<br>';

//2.获取目录名
echo '目录名:', dirname(__FILE__),'<br>';
//php5.3+,直接使用魔术常量__DIR__
echo __DIR__,'<br><hr><pre>';

//3.pathinfo(),将文件名,目录名,扩展名解析到一个数组中
$pathinfo = pathinfo(__FILE__);
print_r($pathinfo);
echo '目录名:',$pathinfo['dirname'],'<br>';
echo '文件名:',$pathinfo['basename'],'<br>';
echo '扩展名:',$pathinfo['extension'],'<br><hr>';

//DIRECTORY_SEPARATOR 根据系统平台自动变化 返回正/反\斜线 正斜杠,符号是"/";反斜杠,符号是"\"。
//正斜杠,符号是"/";反斜杠,符号是"\"。
//  "../ "   表示当前目录的上级目录,即当前的父目录;
//  "/"      表示网站的根目录;
echo DIRECTORY_SEPARATOR;

$path = dirname(__FILE__).DIRECTORY_SEPARATOR.basename(__FILE__);
echo $path;

运行实例 »

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

2.上传图片实例

<!--
 * 系统变量:$_FILES是一个二维数组,一维是当前的文件上传控件的名称,也就是name属性值
 * 二维是它的当前属性,最重要有以下几个:
 *$_FILES['file']['name']:文件原始文件名称
 * $_FILES['file']['type']:文件类型
 * $_FILES['file']['size']:上传文件大小
 * $_FILES['file']['tmp_name']:服务器上的临时文件夹
 * $_FILES['file']['error']:上传错误代码
 */
//$_SERVER['PHP_SELF']:当前PHP脚本
//enctype="multipart/form-data":允许通过表单上传文件
//method:请求类型必需是POST
处理脚本的三种语法:
1. 最严格的写法:$_SERVER['PHP_SELF']:建议实际工作中用htmlspecialchars()进行防跨域攻击处理
2. 最死板的写法,直接写上当前文件名: demo6.php
3. 最懒的写法: 空,啥与不写,默认就是提交到当前页面的php脚本处理
-->
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SEIF']); ?>" method="POST" enctype="multipart/form-data">
    <fieldset>
        <legend align="center">文件上传</legend>
        <strong>选择文件:</strong><input type="file" name="upload">
    </fieldset>
    <button style="border-radius: 5px; width: 80px;height:25px; margin-top: 8px;box-shadow: 2px 2px 2px;background-color:#efefef;" type="submit" name="submit">上传</button>
</form>
<?php
//检测类型是不是POST
    if($_SERVER['REQUEST_METHOD'] == 'POST'){
        if(isset($_FILES['upload']['type']) && !empty($_FILES['upload']['name'])){
//            允许上传类型
            $uptype = ['image/jpg','image/jpeg','image/png'];

            if(in_array($_FILES['upload']['type'], $uptype)){
//                将文件移动到临时目录
                if(move_uploaded_file($_FILES['upload']['tmp_name'],"upload/{$_FILES['upload']['name']}")){
                    //upload  success
                    echo "<script>alert('上传成功')</script>";
                }
            }else{
                echo "<script>alert('只能上传图片')</script>";
            }
        }
        //对上传文件错误处理
        if($_FILES['upload']['error'] > 0){
            //echo '<p>错误原因是:<strong>';
            switch ($_FILES['upload']['error']){
                case 1:
                    echo '文件超过php.ini配置大小';
                    break;
                case 2:
                    echo '文件超过表单中常量设置大小';
                    break;
                case 3:
                    echo '仅有部分文件被上传';
                    break;
                case 4:
                    echo "<script> alert('没有文件上传')</script>";
                    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']);
            }

        }
    }else{
            echo '11';
    }
?>

运行实例 »

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

总结:

  1. 对文件和目录的建立、修改、删除操作。

  2. 使用表单制作一个简单的文件上传页面。

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