• 微信上传永久素材并保存图片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(	hinkDb::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__)."picwo.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     }
  • 相关阅读:
    华为云-Centos7.6-部署elasticSearch7.7
    linux下安装nginx
    Redis5.0.8集群安装
    redis5.0.8单机安装
    Mybatis打印SQL
    PostgreSQL新手教程
    Debian install jdk7
    Debian install jre7
    Debian /etc/apt/sources.list
    安装J2EE的SDK报错:could not find the required version of the Java(TM)2 Runtime Environment in '(null)'的解决办法。
  • 原文地址:https://www.cnblogs.com/xiaogou/p/7198592.html
Copyright © 2020-2023  润新知