必须绑定一个name属性,form标签必须设置编码类型e...">
美文网首页
php上传文件时需要处理的相关逻辑,上传完成后,保存到指定路径下

php上传文件时需要处理的相关逻辑,上传完成后,保存到指定路径下

作者: 似朝朝我心 | 来源:发表于2021-06-11 00:30 被阅读0次

index.php

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
</head>
<body>
    <form action="doAction.php" method="post" enctype="multipart/form-data">
        <input type="file" name="chooseFile">
        <input type="submit" value="上传">
    </form>
</body>
</html>

<input type="file">必须绑定一个name属性,form标签必须设置编码类型enctype="multipart/form-data"

doAction.php

<?php
    #创建数据库连接
    $mysqli = @new mysqli('localhost','root','12345678','qinfb_school');
    //var_dump($mysqli);
    #检测数据库连接状态,有错报错
    if($mysqli -> connect_errno){
        die('error:'.$mysqli -> connect_error);
    }
    #获取上传文件的相关可操作的信息
    //print_r($_FILES["chooseFile"]);
    #如果文件上传失败,打印报错信息:比如用户压根没有上传文件,直接点提交了,这个操作我们得阻止
    if($_FILES["chooseFile"]["error"]){
    # 有上传错误
    echo <<< end
    <script type="text/javascript">
        alert("上传失败!请稍后重试。")
        history.back();
    </script>
end;
    exit();
    }
    #设置文件的保存信息,生成以时间戳命名的文件名、生成以年月日命名的目录名
    $fileName = md5(time());//文件名
    $subFolder = date("Ymd")."/";//目录名
    $pathName = "./".$subFolder.$fileName;//拼接完整的路径,在当前目录下生成
    //检查:目标上传的文件是否已经存在
    if(file_exists($pathName)){
        //若存在就退出
        echo <<< end
        <script type="text/javascript">
            alert("上传失败!请稍后重试。")
            history.back();
        </script>
end;
    }
    //检查:指定的目录是否已经创建存在
    if(!file_exists("./".$subFolder)){
        //若不存在,则创建该目录
        mkdir("./".$subFolder);
    }
    #拿到上传文件的暂时缓存路径
    //$_FILES["chooseFile"]["tmp_name"];
    #将暂时存储的文件移动到指定的目录下
    if(move_uploaded_file($_FILES["chooseFile"]["tmp_name"],$pathName)) {
        echo "文件上传成功";
    }
    
    #拓展:
    //限制文件上传格式或者类型(小bug,后缀大写不能排除,比如.PNG),相关后缀可查询W3C的MIME类型参考手册
    if (!(($_FILES["chooseFile"]["type"] == "image/gif")
    || ($_FILES["chooseFile"]["type"] == "image/jpeg")
    || ($_FILES["chooseFile"]["type"] == "image/jpg")
    || ($_FILES["chooseFile"]["type"] == "text/plain")
    || ($_FILES["chooseFile"]["type"] == "image/png"))){
        echo <<< end
        <script type="text/javascript">
            alert("上传文件类型不符!请稍后重试。")
            history.back();
        </script>
end;
        exit();
    }
    //限制文件上传大小,单位字节
    if($_FILES["chooseFile"]["size"] > 10240){
        echo <<< end
        <script type="text/javascript">
            alert("上传文件过大!请稍后重试。")
            history.back();
        </script>
end;
    exit();
    }
?>

相关文章

网友评论

      本文标题:php上传文件时需要处理的相关逻辑,上传完成后,保存到指定路径下

      本文链接:https://www.haomeiwen.com/subject/lnhmeltx.html