where('id',1)->value('uptype'); $extArr = explode(',',$extType); //查询系统配置中运行上传文件类型,组成新的数组 $fileMime = []; foreach ($extArr as $k=>$v){ $k = stristr($v,':',true);//返回字符:前字符串 $fileMime[$k] = explode('|',substr($v,strrpos($v,":")+1)); //返回:后字符串转换为数组 } //根据上传文件的类型得到允许的文件mime或后缀 $arr = []; $fileTypeArr = explode('|',$fileType); foreach($fileTypeArr as $ft){ if(array_key_exists($ft,$fileMime)){ //数组中是否存在上传的数组的键 foreach($fileMime as $k=>$v){ if($ft == $k){//文件类型和配置中类型相同时 //获取文件mime if($type == 'mime'){ //拼接字符串组成新mime数组 foreach($v as $m){ $arr[] = $ft. '/' . $m; } } //获取文件后缀 if($type == 'ext'){ $arr = array_merge($arr,$v); //合并数组 } } } } } return $arr; } //上传文件 /** * 上传文件 * @param string $fileName 文件名,form表单中的name * @param string $dirName * @param int $fileSize * @param string $fileType * @return \think\response\Json */ /** * @param string $fileName 文件名,form表单中的name * @param string $dirName 文件夹名,上传路径中的文件夹名称 * @param int $fileSize 文件大小,上传限制大小 * @param string $fileType 文件类型,只能为:视频video,文件application,图片image,文本text * @param string $rule 文件命名规则,默认md5,uniqid,date,sha1 * @return \think\response\Json */ public function put(string $fileName, string $dirName, int $fileSize, string $fileType, string $rule = null) { $file = request()->file($fileName); //$type = $file->getMime(); $fileExt = $this->getFileInfo($fileType,'ext'); $fileMime = $this->getFileInfo($fileType,'mime'); try { validate([$fileName=>['fileSize'=>$fileSize * 1024,'fileExt'=>$fileExt,'fileMime'=>$fileMime]]) ->check(['file'=>$file]); } catch (ValidateException $e) { return json(['status'=>-1,'msg'=>$e->getMessage()]); } $savename = \think\facade\Filesystem::disk('public')->putFile(session('user_id'). '/' .$dirName, $file, $rule); $upload = Config::get('filesystem.disks.public.url'); if($savename){ //$name = $file->hashName(); $name_path =str_replace('\\',"/",$upload.'/'.$savename); //halt($name_path); //$image = \think\Image::open("uploads/$name_path"); //$image->thumb(168, 168)->save("uploads/$name_path"); $res = ['status'=>0,'msg'=>'上传成功','url'=> $name_path]; }else{ $res = ['status'=>-1,'msg'=>'上传错误']; } return json($res); } }