1. <?php
  2. namespace Mob\Controller;
  3. use Think\Controller;
  4.  
  5. class WxmaterialController extends Controller {
  6. private $appId;
  7. private $appSecret;
  8. protected function _initialize() {
  9. /* 读取站点配置 */
  10. $config = api('Config/lists');
  11. C($config);
  12. $this -> appId = C('WX_APPID');
  13. $this -> appSecret = C('WX_SECRET');
  14. }
  15.  
  16. function add_material() {
  17. $file_info = array('filename' => '/Public/1111.jpg', //国片相对于网站根目录的路径
  18. 'content-type' => 'image/jpg', //文件类型
  19. 'filelength' => '71' //图文大小
  20. );
  21. dump($file_info);
  22. $access_token = $this -> get_access_token();
  23. $url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={$access_token}&type=image";
  24. $ch1 = curl_init();
  25. $timeout = 5;
  26. $real_path = "{$_SERVER['DOCUMENT_ROOT']}{$file_info['filename']}";
  27. //$real_path=str_replace("/", "//", $real_path);
  28. $data = array("media" => "@{$real_path}", 'form-data' => $file_info);
  29. curl_setopt($ch1, CURLOPT_URL, $url);
  30. curl_setopt($ch1, CURLOPT_POST, 1);
  31. curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
  32. curl_setopt($ch1, CURLOPT_CONNECTTIMEOUT, $timeout);
  33. curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, FALSE);
  34. curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, false);
  35. curl_setopt($ch1, CURLOPT_POSTFIELDS, $data);
  36. $result = curl_exec($ch1);
  37. curl_close($ch1);
  38. if (curl_errno() == 0) {
  39. $result = json_decode($result, true);
  40. var_dump($result);
  41. return $result['media_id'];
  42. } else {
  43. return false;
  44. }
  45. }
  46.  
  47. // =====================================
  48. // = 获取微信公众号的 access_token=
  49. // =====================================
  50. private function get_access_token() {
  51. $m_appact = M('Appact', 'ot_', DB_GY);
  52. $data = $m_appact -> where(array('appid' => $this -> appId)) -> field('access_token,expire_time') -> find();
  53. if ($data['expire_time'] < time()) {
  54. $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
  55. $res = json_decode($this -> httpGet($url));
  56. $access_token = $res -> access_token;
  57. if ($access_token) {
  58. $data['expire_time'] = time() + 7000;
  59. $data['access_token'] = $access_token;
  60. $r = $m_appact -> where(array('appid' => $this -> appId)) -> find();
  61. $save_arr = array('access_token' => $data['access_token'], 'expire_time' => $data['expire_time']);
  62. $add_arr = array('appid' => $this -> appId, 'access_token' => $data['access_token'], 'expire_time' => $data['expire_time']);
  63. $r ? $m_appact -> where(array('appid' => $this -> appId)) -> save($save_arr) : $m_appact -> add($add_arr);
  64. }
  65. } else {
  66. $access_token = $data['access_token'];
  67. }
  68. return $access_token;
  69. }
  70.  
  71. private function httpGet($url) {
  72. $curl = curl_init();
  73. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  74. curl_setopt($curl, CURLOPT_TIMEOUT, 500);
  75. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  76. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  77. curl_setopt($curl, CURLOPT_URL, $url);
  78. $res = curl_exec($curl);
  79. curl_close($curl);
  80. return $res;
  81. }
  82.  
  83. }

php 微信公众号上传永久素材的更多相关文章

  1. Java 微信公众号上传永久素材的方法

    Java 微信公众号上传永久素材的方法 学习了:http://blog.csdn.net/u013791374/article/details/53258275 膜拜一下,源码如下: @Request ...

  2. 怎么在微信公众号上传PPT?

    我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众号中添加附件. 以下是公众号添加附件使用“微附件”小程序的教 ...

  3. 基于 muse-ui 封装一个微信公众号上传插件 实现多图上传

    Vue.component('my-wx-upload', { template: ` <mu-grid-list :cols="3" :cellHeight="9 ...

  4. 怎么将PPT文件上传到微信公众号上?

    我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众号中添加附件. 以下是公众号添加附件使用“微附件”小程序的教 ...

  5. php 微信公众平台上传多媒体接口 41005错误

    文链接: http://www.maoyupeng.com/wechart-upload-image-errorcode-41005.html PHP的cURL支持通过给CURL_POSTFIELDS ...

  6. Azure 项目构建 - 用 Azure 认知服务在微信公众号上搭建智能会务系统

    通过完整流程详细介绍了如何在Azure平台上快速搭建基于微信公众号的智慧云会务管理系统. 此系列的全部课程 https://school.azure.cn/curriculums/11 立即访问htt ...

  7. 个人微信公众号搭建Python实现 -个人公众号搭建-永久素材管理(14.3.5)

    @ 目录 1.说明 2.上传素材 3.获取素材列表 关于作者 1.说明 个人微信公众号开发的功能有限,因为很多权限没有,但支持上传永久素材,具体查看微信公众号文档 这里的请求都要将本地IP地址放到微信 ...

  8. 微信上传文章素材—ASP.NET MVC从View层传数据到Controller层

    View层: $('#btnNews').click(function() { if (!confirm('确定要提交吗?')) { return; } var frontViewData = []; ...

  9. 在安卓上,微信公众号无法分享到QQ的解决办法之一

    今天做一个微信公众号分享功能,参考微信sdk,代码几乎没有任何问题,但就是分享到QQ失败,以下是我QQ分享部分的代码: wx.onMenuShareQQ({ title: '快来和我一起玩转大脑', ...

随机推荐

  1. POJ 3660 Cow Contest(Floyd求传递闭包(可达矩阵))

    Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16341   Accepted: 9146 Desc ...

  2. (转)Centos7 修改硬件时间和系统时间

    查看硬件时间 [root@localhost ~]# hwclock --show Tue 13 Jun 2017 02:11:12 AM CST -0.848845 seconds 1 2 可以看出 ...

  3. Convolutional Networks for Images,Speech,and Time-series

    Convolutional Networks for Images,Speech,and Time-series Yann LeCun  Yoshua Bengio 1995年的 1引言 多层BP网络 ...

  4. bash下输入命令的几个常用快捷键

    ------------------------------------------ 先区分下vi里的命令   快速在行里移动光标 b 是往前部一个单词一个单词的移动 e 是往后部一个单词一个单词的移 ...

  5. jquery訪问ashx文件演示样例

    .ashx 文件用于写web handler的..ashx文件与.aspx文件类似,能够通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程.事实上就是带HTM ...

  6. linux_vim

    今天稍微学习以下vim 学习的一些课件: 1. 2. 3. 4. 5.

  7. 2.3《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——重命名,复制,删除

    最常用的文件操作除了将文件列出来外,就应该是重命名,复制,删除了.正如将文件列出来一样,大多数现代操作系统为这些任务提供了用户图形界面,但是在许多场景中,用命令行还是会更方便. 使用mv命令重命名一个 ...

  8. 2017-2018-2 20155224『网络对抗技术』Exp4:恶意代码分析

    原理与实践说明 实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systr ...

  9. Java技术——String类为什么是不可变的

    0. 前言   如果一个对象,在它创建完成之后不能再改变它的状态,包括对象内的成员变量.基本数据类型的值等等.那么这个对象就是不可变的.众所周知String类就是不可变的.转载请注明出处为SEU_Ca ...

  10. JavaEE笔记(十四)

    #SSH配置文件整合笔记实例 spring-BaseBean.xml <?xml version="1.0" encoding="UTF-8"?> ...