💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
~~~ <?php /* 1.获取上次图片的信息 2.验证上传图片的格式 3.验证上传图片的大小 4.创建上传目录(如果没有) 5.上传文件到指定目录下*/ class ShangChuan{ private $shuchuyuju; //输出问题原因 private $swt; //定义所有问题属性 private $geshi; //获取图片扩展名 private $da=5242880; //定义图片最大值 private $b=['jpg','png','gif','JPG','PNG','GIF']; //文件格式判断 private $tmax; //获取图片大小 private $dir='uploads'; //给定目录 private $sub_dir; //子目录 private $lishitu; //临时图片 function __construct($file) //构造函数 { $this->swt=$file['error']; //等于0问题赋值 $this->geshi=$file['name']; //获取名称 $this->tmax=$file['size']; //获取图片大小值 $this->lishitu=$file['tmp_name']; //临时图片地址 } public function shuchu():?string { //输出到外部 if(!$this->yanzheng()){ return $this->shuchuyuju; } return '上传成功'; } private function yanzheng():?string //验证所有上传图总问题,并执行上传图片 { if($this->suoyouwenti()==false){ $this->shuchuyuju='上传文件有问题'; return false; }elseif($this->wjname()==false){ //验证图片格式有问题 $this->shuchuyuju='文件非图片格式'; return false; }elseif($this->tmax()==false){ $this->shuchuyuju='图片大于5M'; return false; }elseif($this->mulu()==true){ $this->yidong(); } return true; } //检测上传信息 private function suoyouwenti():bool { if($this->swt!=0) { return false; //有问题的时候返回false } return true; } //验证文件名称 private function wjname():bool { $geshi=pathinfo($this->geshi,PATHINFO_EXTENSION); if(!in_array($geshi,$this->b)) { return false; } return true; } //检测上传禁止过大 默认5M private function tmax():bool{ if($this->tmax>$this->da) { return false; } return true; } //判断是否有目录,如果没有创建 private function mulu():bool{ //$dir='uploads'; //给定目录 $this->sub_dir=$this->dir.DIRECTORY_SEPARATOR.date('Y-m-d'); //创建以时间命名的子目录 DIRECTORY_SEPARATOR 判断输目录付号因为win与linx不一样,所以要用这个 if(!is_dir($this->dir)){ //如果没有upleads这个目录创建出来 mkdir($this->dir); mkdir($this->sub_dir); //创建目录 }elseif(!is_dir($this->sub_dir)){ mkdir($this->sub_dir); //创建子目录 } return true; } //移动图片到目录 (最后一步了) private function yidong():?string{ $img_name=date('Ymdllis').rand(100,9999).'.'.$this->geshi; //生成随机名字的图片防止重名的 return move_uploaded_file($this->lishitu,$this->sub_dir.DIRECTORY_SEPARATOR.$img_name); } } $file=$_FILES['tupian']; $tupian= new ShangChuan($file); //构造函数传值 echo $tupian->shuchu(); //实例化结果 ~~~