//添加文章
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用啊
添加回答
舉報
0/150
提交
取消