Tp5 封装好的 文件上传
分为单文件上传和多文件上传
封装类:
class ImgUpload extends Base { /** * 单文件上传,返回文件路径 * * @param $request * @param $param //请求参数名 image * @param $catalog //数据表目录名 uploads/img/ * @param $complete //是否返回完整路径 */ public function upload($request,$param,$catalog,$complete = null) { $file = $this->request->file($param); //获取表单数据 if (!$file || !($file->getInfo())) //不为空且为文件类型 return $this->arrays(false, '', '', '上传错误!'); try { $info = $file->validate([ //限制条件 //"size" => 1024000, "ext" => 'jpg,gif,png,bmp,jpeg' ])->move($catalog); //保存路径 if(!$info) $this->create('',$file->getError(),400)->send(); if($complete) $url = App::config('domain').'/'.$catalog.$info->getSaveName(); else $url = $info->getSaveName(); return $url; }catch (Exception $e){ $this->create('',$e->getMessage(),400)->send(); } } /** * 单文件上传,返回文件路径 * * @param $request * @param $param //请求参数名 images * @param $catalog //数据表目录名 uploads/img/ * @param $complete //是否返回完整路径 */ public function uploads($request,$param,$catalog,$complete = null) { $files = $request->file($param); //获取表单数据 if (!(is_array($files)) || !(count($files))) //需要数组而且不为空 return $this->arrays(false, '', '', '上传错误!'); try { foreach ($files as $k => $file){ //唯一文件名 $name = date('Ymd') . '/' . md5(microtime(true).$file->getInfo()['name']); $info = $file->validate([ //限制条件 //"size" => 1024000, "ext" => 'jpg,gif,png,bmp,jpeg' ])->move($catalog,$name); //保存路径 if(!$info) return $this->create('',$file->getError(),400); if($complete){ $data[$k] = App:config('domain').'/'.$catalog.$info->getSaveName(); }else{ $data[$k] = $info->getSaveName(); } } return $data; }catch (Exception $e){ return $this->create('',$e->getMessage(),400); } } }
测试类:
public function uploads() { $url = (new ImgUpload)->uploads($this->request, 'images', $this->catalog); //获得新封面 return $url; }
注意,多文件上传的参数后面需要加 [ ]


浙公网安备 33010602011771号