黑马程序员技术交流社区

标题: 【上海校区】封装文件上传 [打印本页]

作者: 爱编码的J    时间: 2019-4-29 14:49
标题: 【上海校区】封装文件上传
文件的上传在很多项目中使用概率是非常大的,为了更加方便的上传图片,可以将图片的上传封装在函数中

html代码:
[PHP] 纯文本查看 复制代码
<?php
        include "./function.php";
        if(isset($_POST['btn'])){
                $file=$_FILES["image"];
                $arr=upload($file,"./aa");
                echo "<pre>";
                print_r($arr);
        }
       
?>
<form action="" method="post" enctype="multipart/form-data">
        上传图片:<input type="file" name="image"><br>
        <input type="submit" value="提交" name="btn">
</form>

php代码
function.php文件
[PHP] 纯文本查看 复制代码
<?php
        /**
        *$file 上传的内容
        *$path 上传文件保存的目录地址
        *$type 限制上传文件的类型
        *$size 上传文件的大小
        */

        function upload($file,$path="./upload/",$type=["image/png","image/jpeg","image/jpg"],$size=0){
                $result=['error'=>false,'info'=>''];
                $error=$file["error"];
                if($error!=0){
                        switch($error){
                                case 1: $result["info"]="上传文件大小大于服务器上限";break;
                                case 2: $result["info"]="上传文件超出表单上限";break;
                                case 3: $result["info"]="部分文件上传";break;
                                case 4: $result["info"]="没有文件上传";break;
                                case 6: $result["info"]="找不到临时目录";break;
                                case 7: $result["info"]="上传文件写入失败";break;
                        }
                        return $result;
                }
                //判断文件类型在指定的要求中
                $tmp=$file["tmp_name"];
                //生成fileinfo文件
                $finfo=finfo_open(FILEINFO_MIME);
                $ty=finfo_file($finfo,$tmp);//image/jpeg;charset=binary
                $ty=explode(";",$ty)[0];
                if(!in_array($ty,$type)){
                        $result["info"]="文件类型不符合要求";
                        return $result;
                }


                //判断是否是上传的文件 is_uploaded_file()
                if(!is_uploaded_file($tmp)){
                        $result["info"]="不是上传的文件";
                        return $result;
                }

                //判断上传的文件大小是否符合要求
                $s=$file["size"];
                if($s>$size && $size>0){
                        $result["info"]="上传文件过大";
                        return $result;
                }

                //获取上传的文件名
                $name=$file["name"];
                //获取上传的文件名的扩展名
                $endname=pathinfo($name,PATHINFO_EXTENSION);  //jpg
                //生成唯一文件名
                $filename=uniqid().time().".".$endname;
                //每一天上传内容保存在当天的文件夹中
                $dirname=date("Y-m-d",time());   //2018-12-26
                //生成一个完整的目录名
                $path=rtrim($path,"/")."/".$dirname;
                if(!is_dir($path)){
                        mkdir($path,777,true);
                }
                //生成一个完整的文件路径
                $fullpath=rtrim($path,"/")."/".$filename;
                if(move_uploaded_file($tmp,$fullpath)){
                         $result["info"]="上传成功";
                         $result["error"]=true;
                         return $result;
                }else{
                         $result["info"]="上传失败";
                         return $result;
                }
        }
?>






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2