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

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

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

一、下载图片所有信息

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

微信公众平台开发(77) 图片下载相关推荐

  1. 微信公众平台开发 上传下载多媒体文件

    1 微信公众账号在回复图片.语音.视频的时候,将使用media_id来调用相关文件,很多朋友咨询这个如何开发实现.本文将介绍在微信公众平台开发过程中,如何上传下载多媒体文件. 2 3 4 5 一.上传 ...

  2. 微信公php开发视频,PHP实现微信公众平台开发 全套视频资源下载

    好久没有更新东西了,今天给大家分享一份比较不错的视频学习资源吧. 主要是关于PHP实现微信公众平台开发, 不知道大家对于微信平台的开发有多少了解,那么今天就从基础开始吧,资源目录如下(PS :适各自的 ...

  3. 微信公众平台开发 高级群发接口

    在这篇微信公众平台高级接口开发教程中,我们将介绍如何使用接口实现微信公众平台群发功能.本文分为以下四个部分:准备群发内容选择群发对象执行群发接收群发结果一.准备群发内容群发内容可以是文本.图片.语音. ...

  4. 微信公众平台开发(104) 自定义菜单扫一扫、发图片、发地理位置

    关键字:微信公众平台 自定义菜单 扫一扫 发图片 发地理位置 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-menu-new-type.htm ...

  5. 微信公众 mysql回复图片_微信公众平台开发消息回复总结介绍

    一.简介 微信公众平台提供了三种消息回复的格式,即文本回复.音乐回复和图文回复,在这一篇文章中,我们将对这三种消息回复的格式做一下简单讲解,然后封装成函数,以供读者使用. 二.思路分析 对于每一个PO ...

  6. 微信公众平台开发中-SAE不支持XStream框架的解决方案

    问题描述 最近几天(2014年8月20日之后),突然有不少网友反应,柳峰博客中的微信公众平台开发代码在SAE上运行会报错,或者是能正常部署,但向公众号发消息没反应.以前也有一些初学者质疑过我博客中的代 ...

  7. 微信公众平台开发入门教程(图文)

    关键字:微信公众平台开发入门 作者:贝创工作室 原文: http://www.cnblogs.com/imaker/p/5491433.html 背景知识:微信公众平台的开发需要有一定的PHP基础知识 ...

  8. php 微信公众平台开发之微信群发信息

    这篇文章主要为大家详细介绍了php微信公众平台开发之微信群发信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.目的 完成在微信公众号中群发消息.这里只是完成简单的文字发送.也可以发送语音图片 ...

  9. 微信公众平台开发(82) 天气预报

    在这篇教程中,我们将介绍如何在微信公众平台上开发天气预报功能.我们将使用中国天气网的气象数据接口来获取天气信息. 这篇教程将介绍以下内容: 获取中国天气网的气象数据 在微信公众平台中回复天气 一.中国 ...

最新文章

  1. MySQL服务启动脚本
  2. 实现EditText输入金额(小数点后两位)
  3. python列表输入不加逗号_用python打印不带括号或逗号的列表
  4. Java 基础总结。
  5. 开源中国 OsChina Android 客户端源码分析(7)二维码生成对话框
  6. python windows开发_windows 下 python 开发是一种什么样的体验?
  7. vue中使用FullCalendar日历组件
  8. UIKit 框架之UIControl
  9. 备忘:BLOCK CORRUPTION IN SYSTEM DATAFILE
  10. Db2干净卸载Linux,在Linux/Aix环境下完全卸载DB2
  11. KETTLE-JDBC连接池参数介绍以及使用
  12. Ubuntu解决火狐浏览器无法同步书签的问题
  13. Cisco交换机 ——链路聚合
  14. 秒杀系统设计思路笔记
  15. 标定方法——张正友标定法
  16. Bytom BIP-32协议和BIP-44协议
  17. Delphi 仿QQ皮肤控件设计与运行效果图
  18. 块级元素中设置行书HTML,书法元素在平面设计中的运用.docx
  19. 3199. 命令行选项
  20. flutter 人脸识别_使用flutter和tensorflow lite进行人脸识别认证

热门文章

  1. 电脑硬件知识大扫盲:CPU技术参数集锦
  2. 速修复!CISA警告称 Zoho 服务器0day已遭在野利用
  3. 黑客利用 Gatekeeper 0day 攻击 MacOS 计算机
  4. GO SMS Pro App 被曝0day,泄露数百万条媒体消息
  5. 12年前的 Linux bug 复活,DNS 缓存投毒攻击重现
  6. 聊聊 | 他在Google Play安全奖励计划贡献榜单上排名第一
  7. 奇安信RSA观察|RSAC应用安全技术新风向
  8. 雅虎被告存在重大疏忽 导致5亿账户信息被黑
  9. 用Java实现HTTP文件队列下载
  10. HTTP 返回304