微信获取素材接口地址:

https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN

调用参数:

{"type":TYPE,//    素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news)"offset":OFFSET,//从全部素材的该偏移位置开始返回"count":COUNT //返回素材的数量,取值在1到20之间
}

返回结构

{"total_count": TOTAL_COUNT,//素材总数"item_count": ITEM_COUNT,//当前数"item": [{//素材列表"media_id": MEDIA_ID,"name": NAME,"update_time": UPDATE_TIME,"url":URL},]
}

获取公众号所有素材的思路:

count给最大值20,第一次调用获取total_count,利用total_count除以count获取剩余请求接口数,最后将数据写入数据库

以上操作都很正常,但是当查看数据库后发现 出现了N多name值为CropImage的图片,且素材库里面并没有这些图片,并且图片返回的还不完全

最终查出CropImage产生的原因

用户设置图文消息==>上传图片==>放入素材库==>微信根据传图大小剪裁==>生成多张名为CropImage的隐藏素材库图片

所以这些图片是上传图片的剪裁的一部分 但是这些CropImage的图片不会在素材库里面展示 并且也不占用total_count的个数,但是接口会反回这些数据,就问你坑不坑?更坑的是 当你删除图文消息,删除素材库里面的原图,这些CropImage依然存在于你的接口返回数据里面

最终由于返回图片数远大于total_count导致我的代码出现了bug,也产生了一些没有实际作用的图片,接下来放上优化后的代码

        $api = 'https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=1';$num = 20;$type = 'image';$data = ['type'=>$type,'offset'=>0,'count'=>$num];$has = $i = 1;$items = [];while($has){$data['offset'] = $num*($i-1);$return = curlRequest($api,$data);//curlRequest封装一个culr方法if($return['item_count']<$num){//返回数少于num数 则表示下面没有图片 终止循环$has = 0;}if($return['item_count']>0){$items = array_merge($items, $return['item']);}$i++;}$mediaData = [];foreach($items as $item){if(strtolower($item['name'])=='cropimage'){//放弃cropimage图片的存储continue;}$mediaData[]=['app_id'=>$this->app_id,'media_id'=>$item['media_id'],'name'=>$item['name'],'type'=>$type];}save($mediaData);//数据写入

以上;

关于微信获取素材列表返回CropImage图片的解决办法相关推荐

  1. php微信获取素材列表,20.6.7 获取素材列表

    { "type":"image", "offset":0, "count":10 } 上述数据的参数说明如表20-31所 ...

  2. java微信获取素材列表_获取素材列表

    本接口可以获取当前管理组指定类型的素材列表. 请求说明 Https请求方式: POST 请求包结构体为 { "type": "image", "off ...

  3. 微博移动版获取评论时返回{ok:0}的解决办法

    评论获取的方法可以参考这篇文章https://www.jianshu.com/p/8dc04794e35f,讲的非常详细. 但是可能一些朋友还是会和我遇到一样的问题:无论做什么尝试在第一页之后评论返回 ...

  4. Atitti dbutil获取多个返回结果集的解决

    Atitti dbutil获取多个返回结果集的解决 1.1. 多个select默认只返回第一个resultset1 1.2. 调用存储过程,也是返回第一个select的1 1.3. 如果insert前 ...

  5. python获取网页json返回空_Python用requests库爬取返回为空的解决办法

    首先介紹一下我們用360搜索派取城市排名前20. 我们爬取的网址:https://baike.so.com/doc/24368318-25185095.html 我们要爬取的内容: html字段: r ...

  6. 微信小程序 border设置单边框失效解决办法

    微信小程序 border设置单边框失效解决办法 遇到的问题 解决的方法 总结 遇到的问题 border-right: 1 rpx solid #ccc;border-bottom: 1 rpx sol ...

  7. 微信公众号开发redirect_uri 参数错误 的解决办法,Oauth2授权重定向域名参数错误解决办法

    问题概述 关于这个问题,博主是在进行微信公众号开发过程中获取微信公众号CODE用于下一步验证获取openid和access_token时遇到的, 回调地址: " https://open.w ...

  8. [转]Silverlight在调用wcf时传输数据过大返回Not Found的解决办法

    原文地址:http://www.cnblogs.com/gavinyao/archive/2012/04/17/2454495.html Silverlight在调用wcf时传输数据过大返回Not F ...

  9. 自定义View 中很关键的问题View获取宽/高是0 的解决办法

    原因 Activity的生命周期方法 与 View在measure过程 不是同步执行的,也就是说Activity在执行onCreate ,onStart , onResume 过程中 ,View的测量 ...

最新文章

  1. 怎样使windows上的javaWEB项目公布到Centos上
  2. 学习python需要什么基础-自学python需要什么基础,要掌握哪些知识?
  3. 如何正确的阅读Datasheet?
  4. android配置文件说明
  5. 8-10 牛客网刷题知识点集合
  6. ubuntu系统debootstrap的使用(构建一套基本的系统)
  7. 第三十五 ASP.NET和Web服务(二)
  8. MySQL批量插入性能优化
  9. 基于竞争的MAC协议
  10. HITB CTF 2018 gundam 做题笔记
  11. Image-Guided Navigation of a Robotic Ultrasound Probe for Autonomous Spinal Sonography Using a
  12. “wait_for“: 不是 “winrt::impl“ 的成员
  13. catia v5r18 百度云_catia v5r18 64位免费版 附带安装教程
  14. MySQL 核心知识点
  15. 实习生招聘收割阿里、腾讯等大厂Offer后,有些话想和应届生说
  16. linux下socket编程处理TCP粘包
  17. 运维级医院PACS系统全套源代码
  18. 数据库系统工程师考试历年试题分析与解答
  19. 查看笔记本电池健康度的两种方法和电池报告解析
  20. 爱情发生器:36个问题+4分钟对视=告别单身

热门文章

  1. ssm页面导入文件并做校验
  2. Spring Cloud Config 配置的加密解密
  3. 类型多样的欧式简约家装整体3d模型素材,速来收藏
  4. 灯塔客户---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三十三)
  5. java循环continue_Java循环跳转语句之 continue
  6. (转载)职场面试如何自我评价,面试回答问题技巧
  7. C#枚举体 C语言实验——输入数字星期,输出英文
  8. mysql left join视图_MySQL之视图
  9. “毒舌”专家解析案例Part12—康师傅方便面品牌追踪
  10. 企业生产如何智能化?数据构建智能车间