前段时间搞微信开发,其中用到微信中的公众号二维码图片,当时没有在意直接将图片路径放进了数据库,调取时发现图片被做防盗链了。
当时想图片存储在本地比较合适,于是按照curl 模拟微信场景读取图片下载到本地,这样也就避过了微信的检测机制。
/** * 将微信图片保存到本地 * @param string $url 微信的图片地址 * @param string $local_path_img 保存到本地的图片地址(包括图片的后缀名) * @return true */ public function getWechatPic($url, $local_path_img) { $ch = curl_init(); $httpheader = array( 'Host' => 'mmbiz.qpic.cn', 'Connection' => 'keep-alive', 'Pragma' => 'no-cache', 'Cache-Control' => 'no-cache', 'Accept' => 'textml,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8', 'User-Agent' => 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36', 'Accept-Encoding' => 'gzip, deflate, sdch', 'Accept-Language' => 'zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4' ); $options = array( CURLOPT_HTTPHEADER => $httpheader, CURLOPT_URL => $url, CURLOPT_TIMEOUT => 5, CURLOPT_FOLLOWLOCATION => 1, CURLOPT_RETURNTRANSFER => true ); curl_setopt_array( $ch , $options ); $result = curl_exec( $ch ); curl_close($ch); if(file_put_contents( $local_path_img, $result)){ return 1; }else{ return 0; } }(友情提示:微信头像没有防盗链,正常使用即可)