为了账号安全,请及时绑定邮箱和手机立即绑定

请问下TP5类似添加文章代码有窍门吗?我写了一百行代码。。。

请问下TP5类似添加文章代码有窍门吗?我写了一百行代码。。。

否认三连 2017-10-03 12:36:20
//添加文章 public function addArticle(){     $data = request()->post();     //一、处理缩略图     //创建目录     $path = 'static/image/'.date('ymd',time());     $temp = 'temp';     $thumb = 'upload';     if(!file_exists($path)){         mkdir($path,777,true);     }     if(!file_exists($temp)){         mkdir($temp,777,true);     }     if(!file_exists($thumb)){         mkdir($thumb,777,true);     }     $file = request()->file('thumb');     if($file) {         $info = $file->validate([ 'ext' => 'jpg,png,gif'])->rule('md5')->move($temp);//验证         if($info){           $pathname = $info->getPathname();           $filename = $info->getFilename();           $info = \think\Image::open($pathname);           $img = $info->thumb(200, 200)->save($thumb.'/'. $filename);           if($img){               $data['imgPath'] = $thumb.'/'. $filename;               unlink($pathname);//删除临时文件           }         }else{             $info->getError();         }     }     //二、处理 UEditor 内容中的图片信息     $pattern = '/(\/)?(\w+\/)+\w+\.(jpg|png|gif)/';     $res = preg_match_all($pattern,$data['content'],$row);     if($res){         //有图片信息就处理         //1.检测临时图片文件是否存在         foreach ($row[0] as $k=>$v){             //由于只能以入口文件为参考点,所以preg_replacepu bublic之前的目录,获取临时文件路径             $pattern2 = '/\/?(\w+\/)+public\//';             $v = preg_replace($pattern2,'',$v);             if(file_exists($v)){                 //2.转存图片,把临时路径存入数组,方面后面删除使用                 $this->linkinfo['old'][] = $v;                 $filename = pathinfo($v,PATHINFO_BASENAME);                 //3.替换内容图片路径,把新路径存入数组,方面后面删除                 $res = copy($v,$path.'/'.$filename);                 $this->linkinfo['new'][] = $path.'/'.$filename;                 if($res){                     $data['content'] = str_replace($v,$path.'/'.$filename,$data['content']);                 }             }else{                 $this->insertOne($data);             }         }//endforeach         //4.数据插入数据库         $res = $this->insertOne($data);         if($res){             //删除临时图片文件             foreach ($this->linkinfo['old'] as $k=>$v){                 unlink($v);             }             return true;         }else{             //删除临时图片,另存图片,缩略图             foreach ($this->linkinfo['old'] as $k=>$v){                unlink($v);             }             foreach ($this->linkinfo['new'] as $k=>$v){                 unlink($v);             }                 unlink($thumb.'/'. $filename);             return false;         }     }else{         //没有图片信息,直接处理         $res = $this->insertOne($data);         return $res;     } } public function insertOne($data){     $res = Article::insert($data);     return $res; }虽然能用,但感觉没这么绕吧?顺便问下,怎么让Image::open()不直接跳错误页面,让我IF用啊
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 1691 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信