首页> 基础笔记 >PHP基础学习 >文件处理 文件处理

PHP完整的文件上传处理

作者:小萝卜 2019-08-27 浏览 1039

简介PHP完整的文件上传处理

PHP完整的文件上传处理
<?php
//完整的文件上传处理

//1. 初始化变量
$upfile = $_FILES['pic']; //获取上传文件信息
$path = "./uploads/"; //上传文件储存目录
$typeList=array("image/jpeg","image/png","image/gif"); //允许的上传文件类型(空数组表示不限制)
$maxSize=0; //表示允许上传文件的大小(默认0表示不限制)

//2. 判断错误号
if($upfile['error']>0){
    switch($upfile['error']){
        case 1: $info = "上传文件大小超出php.ini的配置"; break;
        case 2: $info = "上传文件大小超出表单隐藏的设置"; break;
        case 3: $info = "只有部分文件被上传"; break;
        case 4: $info = "没有文件上传"; break;
        case 6: $info = "找不到临时文件夹"; break;
        case 7: $info = "文件写入失败"; break;
        default: $info = "未知上传文件错误!"; break;
    }
    die("文件上传失败!原因:".$info);
}

//3. 过滤上传文件类型
if(count($typeList)>0){
    if(!in_array($upfile['type'],$typeList)){
        die("文件上传失败!原因:上传文件类型错误!");
    }
}

//4. 过滤上传文件大小
if($maxSize>0){
    if($maxSize<$upfile['size']){
        die("文件上传失败!原因:上传文件大小超出当前配置!");
    }
}

//5. 随机上传文件名
$ext = pathinfo($upfile['name'],PATHINFO_EXTENSION); //获取文件的后缀名
do{
    $newfile = date("YmdHis").rand(1000,9999).".".$ext; //随机新的文件名
}while(file_exists($path.$newfile)); //判断新文件名是否存在

//6. 执行上传文件处理
//先判断上传文件是否有效
if(is_uploaded_file($upfile['tmp_name'])){
    //执行上传文件的移动
    if(move_uploaded_file($upfile['tmp_name'],$path.$newfile)){
        //表示上传文件成功
        echo "上传文件成功!文件名:".$newfile;
    }else{
        die("上传文件移动失败!");
    }
}else{
    die("无效的上传文件!");
}

很赞哦! (0)

文章评论

    高端网站建设