위챗에서 영구 소재를 업로드하고 이미지 URL을 데이터베이스에 저장

12477 단어
tp5 기반
한 번에 핵심 코드만 위한 것이지 완전한 것은 아니다.
Wechat.php는 Base를 계승해야 합니다.php에서만 그 안의 방법을 사용할 수 있습니다.
Wechat.php에서 그림을 추가하는 방법은 다음과 같습니다.
 1  public function add()//      
 2     {  
 3         //echo $_SERVER['DOCUMENT_ROOT'];
 4         //$this->upload();
 5         if(request()->isPost()){
 6           $date=date("Y-m-d h:i:s");
 7           $data['date']=$date;
 8                //    
 9           if($_FILES['pic']['tmp_name']){
10              $file = request()->file('pic');
11              //          /public/static/    
12              $info = $file->move(ROOT_PATH . 'public/static' . DS . 'uploads');
13              // var_dump( $info);
14              if($info){
15              //             
16              $data['pic']='uploads/'.date('Ymd').'/'.$info->getFilename(); 
17              $url=$this->upload($data['pic']);
18              $data['url']=$url;
19              //echo $info->getFilename(); die;
20              // echo  $data['pic']; die;
21              }else{
22              //           
23              return $this->error($file->getError());
24              }
25             
26             //    
27            if(\think\Db::name('sucai')->insert($data)){
28                 return $this->success('    !','sucai');
29             }else{
30                 return $this->error('    !');
31             }
32           }else{
     return $this->error('      ');}    
33         }  
34        
35     }

Base.php의 핵심 방법은 다음과 같습니다.
 1 public function upload($pic)//         (  )
 2     {  //$pic             ,    
 3       $access_token=$this->getWxAccessToken();
 4       $type="image";
 5       //$filepath=dirname(__FILE__)."\pic\wo.jpg";//  :            ,(   )
 6       //$filepath= $_SERVER['DOCUMENT_ROOT']."/wexin/public/static/uploads/test.jpg";//  :          ,(   )
 7       $filepath= $_SERVER['DOCUMENT_ROOT']."/wexin/public/static/".$pic;
 8       $filepath=str_replace("/","\\",$filepath);//windows     \,      
 9       $filedata=array("media"=>"@".$filepath);
10       //$url="http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=$access_token&type=$type";//      ,(  )
11       $url="https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=$access_token";//      (  )
12       $result=$this->httpsPic($url,$filedata);
13       $result=json_decode($result,true);
14       $result=str_replace("\\","", $result['url']);//   /,    
15       return $result;
16     }
17 
18     public function httpsPic($url,$data)//        (  )
19     {
20          $curl=curl_init();
21          curl_setopt($curl,CURLOPT_URL, $url);
22          curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);
23          curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);
24          if(!empty($data)){
25             curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
26             curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
27          }
28          curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
29          $output=curl_exec($curl);
30          if(curl_error($curl)){
31          curl_error($curl);
32          curl_close($curl);
33          }else{
34             return $output;
35          }
36     }

 
전재 대상:https://www.cnblogs.com/xiaogou/p/7198592.html

좋은 웹페이지 즐겨찾기