微信图片鉴黄接口开发 以及遇到的那些坑
好久好久没更新了哈, 最近比较忙哈。。。继续
腾讯微信的图片鉴黄接口请求的时候竟然对PHP的版本有要求 分别5.6以上和5.6以下的区分,下面上代码 ,然后说原因
//这里是图片上传 你们懂的哈 先传
1 $tmp_filename = $_FILES['file']['tmp_name']; 2 $name = date('YmdHis').rand(9999,999999).basename($_FILES["file"]['name']); 3 move_uploaded_file($tmp_filename,'../Uploads/'.$name); 4 5 //这里就是一个大坑了 ,实力坑爹,不同版本中间存在是否含有curlfile这个类,所以这里需要判断是否含有curlfile这个类
因为这个类是curl请求专用的类,如果没有 无法发送参数到第三方,所以如果包含的话 需要实例化,否则直接使用 6 if(class_exists('\CURLFile')){ 7 $dt = ['media' => new \CURLFile(dirname(dirname(__FILE__)).'/Uploads/'.$name)]; 8 }else{ 9 $dt = ['media' => "@{dirname(dirname(__FILE__)).'/Uploads/'.$name}"]; 10 } 11 $url = 'https://api.weixin.qq.com/wxa/img_sec_check?access_token='.Yii::$app->redis->get('access_token'); 12 $response = Utils::curl_post($url,$dt); 13 $res = json_decode($response,true); 14 if(isset($res['errcode']) && $res['errcode']==0 && $res['errmsg']=='ok'){ 15 unlink(dirname(dirname(__FILE__)).'/Uploads/'.$name); 16 $this->code = 0; 17 $this->data = []; 18 $this->msg = '不是黄图'; 19 return; 20 }else if(isset($res['errcode']) && ($res['errcode']=='40001' ||$res['errcode']=='42001')){ 21 22 Utils::GetAccessTokens(2); 23 // unlink($name); 24 $this->actionCheckYellow(); 25 26 }else if(isset($res['errcode']) && $res['errcode']=='87014'){ 27 unlink($name); 28 $this->code = -1; 29 $this->data = []; 30 $this->msg = '含有违规内容'; 31 return; 32 }else{ 33 unlink($name); 34 $this->code = -2; 35 $this->data = []; 36 $this->msg = '检测失败 请重新检测'; 37 return; 38 }
就这些 主要就是 判断curlFile是否存在,特别要注意你的php版本 。不过最好加上,万一你们服务器php版本切换了呢 是吧