PHP文件上传操作 代码

149次阅读
没有评论

upload.html 部分

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title> 上传功能练习 </title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="image" />
    <input type="submit" value="上传文件" />

</form>
</body>
</html>

upload.php 部分

<?php 
header("content-type:text/html;charset=utf-8");


/*var_dump($_FILES);
die;*/

//var_dump($file);
$name=$_FILES['image']['name'];   // 原文件名
$type=$_FILES['image']['type'];   // 源文件类型
$temp=$_FILES['image']['tmp_name'];   // 源文件上传所存储的临时文件夹路径 + 临时文件名
$error=$_FILES['image']['error'];  // 获取的错误的提示
$size=$_FILES['image']['size'];   // 上传文件的字符节大小


    // 判断文件上传的错误类型
    switch ($error) {
        case '1':
            echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";
            break;
        case '2':
            echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";
            break;
        case '3':
            echo "文件只有部分被上传";
            break;
        case '4':
            echo "没有文件被上传";
            break;
        case '6':
            echo "找不到临时文件夹";
            break;
        case '7':
            echo "文件写入失败";
            break;
        /*case '0':
            echo "文件上传成功";*/
    }


    // 判断文件大小是否超限
    if($size>3145728){die("单个文件限制最大 3M 以内");
    }

    // 判断上传的文件的类型是否符合要求 (根据文件后缀判断)
    $allow=array('image/jpeg','image/png','image/jpg','image/gif'); // 允许上传的文件类型
    if(!in_array($type, $allow)){echo "上传的文件类型不正确,"."允许上传文件类型有".implode(',',$allow);
        die;
    }

    // 判断上传文件的实际文件类型是否符合要求 (根据文件的 MIME 类型进行判断)
    $finfo=finfo_open(FILEINFO_MIME_TYPE);
    $mime=finfo_file($finfo,$temp);
/*    var_dump($finfo);
    var_dump($mime);
    exit;*/
    if(!in_array($mime,$allow))
    {die("文件的 MIME 类型不合法");
        
    }



    // 获取源文件后缀名
    $suffix=strrchr($name,".") ;  // 通过字符串 strrchr() 函数获取源文件的文件后缀名
    
    // 重命名 生成一个随机名字的函数 文件名 = 当前时间 + 随机的几位数字 + 文件后缀名
    $new_name=date('YmdHis').'-'.mt_rand(1000,9999).$suffix;

    

    // 移动临时文件保存到指定文件夹并添加重命名

    $path= 'image/';   // 文件存储路径 同级目录下的 image 文件夹
    $str=$path.$new_name;   // 拼接文件路径 + 文件名 + 文件名后缀
    $result=move_uploaded_file($temp,$str);
    if($result){echo "文件上传成功 文件名为 $new_name";}else{echo "文件上传失败";}


 ?>
正文完
有偿技术支持加微信
post-qrcode
 
评论(没有评论)
验证码