PHP 文件上传

HTML

<!DOCTYPE html>
<html lang="en">
<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="upload.php" method="post" enctype="multipart/form-data">
        <!-- 演示2错误 (如果写在下面,不生效了)-->
        <!-- <input type="hidden" name="MAX_FILE_SIZE" value='10'> -->
        <input type="file" name="abcfile" /><br/>
        <input type="submit" value="上传" />
    </form>
</body>
</html>

PHP

<?php
var_dump($_FILES);
// var_dump($_FILES['abcfile']);
// 1. 判断是否有错误号(查手册is_uploaded_file)
if($_FILES['abcfile']['error']){
    switch ($_FILES['abcfile']['error']) {
        case 1:
            $str = '上传的文件超过了php.ini中 upload_max_filesize 选项限制的值';
            break;
        case 2:
            $str = '上传文件的大小超过了HTML表单中 MAX_FILE_SIZE 选项指定的值';
            break;
        case 3:
            $str = '文件只有部分被上传';
            break;
        case 4:
            $str = '没有文件被上传';
            break;
        case 6:
            $str = '找不到临时文件夹';
            break;
        case 7:
            $str = '文件写入失败'; 
            break;
    }
    echo $str;
    exit;
}
// 2.判断你准许的文件的大小
if($_FILES['abcfile']['size'] > (pow(1024, 2) * 2)){
    echo '文件大小超过了准许的大小';
}
// 3.判断你准许的mime类型,文件后缀名
$allowMime = ['image/png', 'image/jpg','image/jpeg', 'image/gif', 'image/wbmp'];
$allowSubFix = ['png', 'jpg', 'jpeg', 'gif', 'wamp'];
$info = pathinfo($_FILES['abcfile']['name']);
// var_dump($info);
$subFix = $info['extension'];
if(!in_array($subFix, $allowSubFix)){
    exit('不准许的文件后缀');
}
if(!in_array($_FILES['abcfile']['type'], $allowMime)){
    exit('不准许的mime类型');
}
// 4.拼接上传路径
$path = 'upload/';
if(!file_exists($path)){
    mkdir($path);
}
// 5.文件名随机
$name = uniqid() . '.' . $subFix;
// 6.判断是否是上传文件
if(is_uploaded_file($_FILES['abcfile']['tmp_name'])){
    if(move_uploaded_file($_FILES['abcfile']['tmp_name'], $path.$name)){
        echo '上传成功';
    }else{
        echo '文件移动失败';
    }
}else{
    echo '不是上传文件';
    exit;
}
原文地址:https://www.cnblogs.com/lisaShare/p/12524287.html