好久好久沒更新了哈, 最近比較忙哈。。。繼續
騰訊微信的圖片鑒黃接口請求的時候竟然對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版本切換了呢 是吧