来源:自学PHP网 时间:2015-04-14 12:58 作者: 阅读:次
[导读] 微信公众平台的用户头像和接口取到的用户上传图片都做了防盗处理,不能被其他网页引用。例如,下面是在引用用户头像的图片的时候,提示未经允许不可引用。本文介绍如何下载这...
微信公众平台的用户头像和接口取到的用户上传图片都做了防盗处理,不能被其他网页引用。 例如,下面是在引用用户头像的图片的时候,提示未经允许不可引用。
本文介绍如何下载这些图片的方法! 一、下载图片所有信息 使用CURL的方式下载 function downloadImageFromQzone($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_NOBODY, 0); //只取body头 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $package = curl_exec($ch); $httpinfo = curl_getinfo($ch); curl_close($ch); $imageAll = array_merge(array('imgBody' => $package), $httpinfo); return $imageAll; } 返回将返回图片的二进制数据及http头信息 http头如下 ["url"]=> string(66)"http://mmsns.qpic.cn/mmsns/L4qjYtOibumlqutvkb6r0V0KCjEJM76NFiawL5tDicOZn9ibKgIaiaUfeRA/0" ["content_type"]=> string(10)"image/jpeg" ["http_code"]=> int(200) ["header_size"]=> int(374) ["request_size"]=> int(258) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(0.289523) ["namelookup_time"]=> float(0.002558) ["connect_time"]=> float(0.003475) ["pretransfer_time"]=> float(0.003477) ["size_upload"]=> float(0) ["size_download"]=> float(42240) ["speed_download"]=> float(145895) ["speed_upload"]=> float(0) ["download_content_length"]=> float(42240) ["upload_content_length"]=> float(0) ["starttransfer_time"]=> float(0.241982) ["redirect_time"]=> float(0)
二、根据http头做一些过滤 一些明显不符合要求的图片就直接忽略掉,没有必要保存 $imageExt = (0 < preg_match('{image/(\w+)}i', $imageAll["content_type"], $extmatches))? $extmatches[1]: "jpeg"; if (preg_match('{(jpg|jpeg|png)$}i', $imageExt) == 0){ //非jpg,jpeg,png格式 $contentStr = "不支持类型"; }else if ($imageAll["download_content_length"]/1024 > 200){ //大于200K $contentStr = "图片太大"; }else if ($imageAll["total_time"] > 1){ //大于1秒 $contentStr = "网速太慢"; } 三、保存图片二进制数据 保存到BAE $fileUpload = $imageAll["imgBody"]; require_once (dirname( __FILE__ ). '/bcs/bcs.class.php'); $host = 'bcs.duapp.com'; $ak = ''; $sk = ''; $bucket = ''; $filename = time (); $object = '/images/'.$filename.'.jpg'; $baiduBCS = new BaiduBCS ( $ak, $sk, $host ); $opt = array("acl" => "public-read"); $response = $baiduBCS->create_object_by_content( $bucket, $object, $fileUpload, $opt ); 保存到SAE if (isset($_SERVER['HTTP_APPNAME'])){ //SAE环境 $s = new SaeStorage(); $s->write($domain, $filename, $imageAll["imgBody"]); } 保存到本地 //本地操作 $local_file = fopen($filename, 'w'); if (false !== $local_file){ if (false !== fwrite($local_file, $imageAll["imgBody"])) { fclose($local_file); } }
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com