PHP 全面解析如何上传文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>接收图片</title>
</head>
<body>
<form action="3-2.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="999999"/>
    &emsp;账号:&emsp;<input type="text" name="num" /><br/>
    &emsp;密码:&emsp;<input type="password" name="pas"/><br/>
    确认密码:<input type="password" name="p_new"><br/>
    上传文件:<input type="file" name="pic"/><br/>
    <input type="submit" value="提交"/>
</form>
</body>
</html>
var_dump($_FILES);

运行结果:

F:\PHP\www\vbs\school\3-2.php:2:
array (size=1)
  'pic' =>
    array (size=5)
      'name' => string '123.JPG' (length=7)
      'type' => string 'image/jpeg' (length=10)
      'tmp_name' => string 'F:\PHP\tmp\php2B81.tmp' (length=22)
      'error' => int 0
      'size' => int 53122

<?php
    //判断文件是否上传
    if ($_FILES["pic"]["error"] !== 0){
        switch ($_FILES["pic"]["error"]){
            case 1;
                echo "超出 php.ini 的最大值";
                die();
                break;
            case 2;
                echo "超出表单所允许的最大值";
                die();
                break;
            case 3;
                echo "文件只有部分被上传";
                die();
                break;
            case 4;
                echo "文件未上传";
                die();
                break;
            case 6;
                echo "未找到临时目录";
                die();
                break;
            case 7;
                echo "写入文件失败";
                die();
                break;
        }
    }
    //获取文件的名字和后缀名
    $name = $_FILES["pic"]["name"];
    $a = pathinfo($name);   // dirname(目录名)  basename(基本名)  extension(扩展后缀名)  filename(文件名:基本名+后缀名)
    $extension_name = $a["extension"];    //获取后缀名
    $filename = $a["filename"]; //获取文件名
    $new_name = md5(time().rand(0,9999999)).".".$extension_name;    //给上传文件更改名字,防止重名被覆盖
    //上传获取文件的类型
    $tpye = $_FILES["pic"]["type"];
    $types = ["image/jpeg","image/png","image/gif"];    //创建一个新数组,存放用户可以上传的文件类型
    if (!in_array($tpye,$types)){   //检查 参数2 是否包含 参数1
        echo "上传的文件类型不符合要求";
        die();
    }
    //判断上传文件大小
    if ($_FILES["pic"]["size"] > "99999999"){
        echo "单个文件上传过大";
        die();
    }
    //判断文件是否由表单上传
    $tmp = $_FILES["pic"]["tmp_name"];
    if (!is_uploaded_file($tmp)){   // is_uploaded_file() 判断文件是否是通过 HTTP POST 上传的
        echo "请正确上传文件";
        die();
    }
    //移动文件
    $dir = "F:/test_photo/".$new_name;
    if (move_uploaded_file($tmp,$dir)){ // move_uploaded_file() 将上传的文件移动到新位置
        echo "上传成功";
    }else{
        echo "上传失败";
    }

猜你喜欢

转载自blog.csdn.net/Qjy_985211/article/details/82503390