微信公众平台开发(77) 图片下载

2019-03-02 00:51|来源: 网路

微信公众平台的用户头像和接口取到的用户上传图片都做了防盗处理,不能被其他网页引用。

例如,下面是在引用用户头像的图片的时候,提示未经允许不可引用。

 

本文介绍如何下载这些图片的方法!

一、下载图片所有信息

使用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);
    }
}

 

方倍工作室微信公众平台账号关注方法:
1. 微信通讯录-添加朋友-查找公众号-搜索“方倍工作室”
2. 微信通讯录-添加朋友-搜号码-输入“pondbaystudio”
3. 使用微信扫描下面的二维码


转自:http://www.cnblogs.com/txw1958/p/weixin77-download-picture

相关问答

更多
  • 能使用的!微信 在安卓手机里可以使用,安装是用java 开发的,所以 可以用java开发
  • 盗链的解决方案 其实通过WEB服务器的URL过滤技术,这个伤脑筋的问题会很容易得到解决。 如果WEB服务器用的是APACHE的话,那么使用APACHE自带的Url Rewrite功能可以很轻松地防止各种盗链,其原理是检查REFER,如果REFER的信息来自其他网站则禁止访问所需要的资源。 那么,IIS支持UrlRewrite吗? 答案很简单,不支持。但是我们可以通过安装第三方服务器扩展让IIS支持。 目前有一种产品能比较好地支持IIS的UrlRewrite,名字叫ISAPI_Rewrite。 下载地址在: ...
  • 首先微信的公众平台是腾迅公司在微信的基础上新增的功能,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字、图片、语音的全方位沟通、互动。微信公共平台服务分为两种号,一个是“订阅号” 一个是“服务号”, 然后是两种模式,一个是“编辑模式”,另一个是“开发模式”。 然后你下面红方框的叫自定义菜单栏,红园框叫二级菜单栏,只有服务号才能有得功能。 服务号每个月可以推送一个消息(图文,文字,图片)订阅号就每天能推送消息。 然后开发模式就可以点击文字 进入其他页面 ----------分割线-- ...
  • 微信公众平台开发注意事项: 一、微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请前往微信开放平台接入。 二、在申请到认证公众号之前,你可以先通过测试号申请系统,快速申请一个接口测试号,立即开始接口测试开发。 三、在开发过程中,可以使用接口调试工具来在线调试某些接口。 四、每个接口都有每日接口调用频次限制,可以在公众平台官网-开发者中心处查看具体频次。 五、在开发出现问题时,可以通过接口调用的返回码,以及报警排查指引(在公众平台 ...
  • 小猪cms还凑合,,有源码的 ,每周更新两三个模板的 ,你可以看下 ,,
  • 登录微信公众平台,点击左下角的 开发者工具,即可看到相关文档。
  • 微网站开发模式教程:   第一步:申请消息接口   在公众平台网站的高级功能 – 开发模式页,点击“成为开发者”按钮,填写URL和Token,其中URL是开发者用来接收微信服务器数据的接口URL。Token可由开发者可以任意填写,用作生成签名。   第二步:验证URL有效性   开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数:   开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回 echostr参数内容,则接入生效,成为开发 ...
  • 微信公众平台属于腾讯的产品,他们后台的代码自己应该是改不了的,你是想实现什么功能呢?可以联系微信客服给他们提建议的呀
  • 这个需要根据你找什么样的开发商,然后开发什么样的功能,如果是该需要对接你们系统之类的功能比较复杂,有几千的,也有好几万的,这个看你的需求
  • 首先微信的公众平台是腾迅公司在微信的基础上新增的功能,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字、图片、语音的全方位沟通、互动。微信公共平台服务分为两种号,一个是“订阅号” 一个是“服务号”, 然后是两种模式,一个是“编辑模式”,另一个是“开发模式”。 然后你下面红方框的叫自定义菜单栏,红园框叫二级菜单栏,只有服务号才能有得功能。 服务号每个月可以推送一个消息(图文,文字,图片)订阅号就每天能推送消息。 然后开发模式就可以点击文字 进入其他页面 ----------分割线-- ...