首页 > 代码库 > 微信上传永久素材并保存图片URL到数据库

微信上传永久素材并保存图片URL到数据库

基于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     }

 

微信上传永久素材并保存图片URL到数据库