PHP 5.6 微信上传临时素材的坑
/**
* 上传素材
*/
function add_material($url){
$access_token = wx_access_token();
$wx_url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={$access_token}&type=image"
$real_path = "{$_SERVER['DOCUMENT_ROOT']}{$url}";
$result = http_post($wx_url, $real_path);
$arr = json_decode($result,true);
return $arr;
} /**
* 获取access_token
*/
function wx_access_token(){
$config=C('WEIXINPAY_CONFIG');
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$config['APPID'].'&secret='.$config['APPSECRET'];
$result = json_decode(wx_curl($url),true);
return $result['access_token'];
}
function http_post($url ='' , $fileurl = '' )
{
$curl = curl_init();
if(class_exists('\CURLFile')){
curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, true);
$data = array('media' => new \CURLFile($fileurl));
}else{
if (defined ( 'CURLOPT_SAFE_UPLOAD' )) {
curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, false );
}
$data = array('media' => '@' . realpath($fileurl));
}
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
以上是我的完整代码。
先说说我的环境吧,phg5.6+apache2.4
坑
- 图片上传一定要用本地的绝对路径 例 curl -F media=@C:/Users/Administrator/Desktop/phpStudy/WWW/项目名称/Upload/qrcode/2017-10-08/657d112ce5b2e4c02699faa4b369c6ee.png
- 微信access_token使用时长7200秒 (我这里偷懒没有设置,不过你们要注意哦)
- PHP版本问题 5.6和5.6以上的版本 在curl内要设置
curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, true);
$data = array('media' => new \CURLFile($fileurl)); - PHP5.5及以下版本
if (defined ( 'CURLOPT_SAFE_UPLOAD' )) {
curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, false );
}
$data = array('media' => '@' . realpath($fileurl)); - CURLOPT_SSL_VERIFYPEER:是否检测服务器的证书是否由正规浏览器认证过的授权CA颁发的。
PHP 5.6 微信上传临时素材的坑的更多相关文章
- php 调用微信上传临时素材接口 {“errcode”:41005,”errmsg”:”media data missing hint”}
原因:由于PHP5.6以前与之后的版本curl_setopt有差异.PHP5.6以后不再支持”@文件路径”的方式. $picPath= "public\public\upload\xxx.p ...
- C#-微信公众平台接口-上传临时素材
最烦做微信公众平台的东西..文档说得不清不楚,又没示例代码,只能自己 慢慢搜索,弄了一晚上,基本弄出来了,把本地的图片上传到微信的临时素材那里,返回媒体ID,用于其他操作,代码如下 :(自己导入相应的 ...
- 微信公众号开发---上传临时素材到公众号遇到的问题:"errcode":41005,"errmsg":"media data missing
1.上传临时素材到公众号遇到的问题:"errcode":41005,"errmsg":"media data missing 解决办法:因为php版本 ...
- 微信上传文章素材—ASP.NET MVC从View层传数据到Controller层
View层: $('#btnNews').click(function() { if (!confirm('确定要提交吗?')) { return; } var frontViewData = []; ...
- 企业微信上传 带中文名称的 临时素材资源 报错 44001:empty media data
错误原因:urllib3的老版本bug,卸载掉 requests,urllib3,从新安装最新版的requests(此包内部依赖urllib3): 我从新安装的是 requests==2.22.0 及 ...
- 【微信上传素材接口--永久性】微信永久性上传、获取返回的medie_id 和url
上传图片到微信服务器获得media_id和url (永久性) 其他接口类:https://www.cnblogs.com/gjw-hsf/p/7375261.html 转载地址:https://blo ...
- Java 微信公众号上传永久素材的方法
Java 微信公众号上传永久素材的方法 学习了:http://blog.csdn.net/u013791374/article/details/53258275 膜拜一下,源码如下: @Request ...
- 微信上传图文消息invalid media_id hint,thumb_media_id怎么获取
微信上传图文消息thumb_media_id, thumb_media_id怎么获取, 微信群发图文消息invalid media_id hint, 微信群发图文消息40007, 40007,inva ...
- 微信小程序上传文件遇到的坑
在开发小程序时,使用的花生壳做的内网映射,域名使用花生壳卖的https域名 在做小程序文件上传时,调用接口,老是报错. Caused by: org.apache.commons.fileupload ...
随机推荐
- Java排序算法分析与实现:快排、冒泡排序、选择排序、插入排序、归并排序(二)
一.概述: 上篇博客介绍了常见简单算法:冒泡排序.选择排序和插入排序.本文介绍高级排序算法:快速排序和归并排序.在开始介绍算法之前,首先介绍高级算法所需要的基础知识:划分.递归,并顺带介绍二分查找算法 ...
- CSS3 background-size 属性
定义和用法 background-size 属性规定背景图像的尺寸. 默认值: auto 继承性: no 版本: CSS3 JavaScript 语法: object.style.background ...
- Core Graphics框架是Quartz的核心,也是内容描画的基本接口。
Core Graphics框架是Quartz的核心,也是内容描画的基本接口.
- IOS开发之UIView总结1
太长了,请看 http://blog.csdn.net/xdrt81y/article/details/9128695 performSelector: performSelector:withObj ...
- intern
java.lang.String的intern()方法"abc".intern()方法的返回值还是字符串"abc",表面上看起来好像这个方 法没什么用处.但实际 ...
- No grammar constraints (DTD or XML schema).....两种解决方法
方法一:常用方法 关闭XML验证 工具栏:windows => preferences => xml => xml files => validation => In ...
- 【js 实践】js 实现木桶布局
还有两个月左右就要准备实习了,所以特意练一练,今天终于搞定了js 的木桶布局了 这一个是按照一个插件的规格去写的以防以后工作需要,详细的解释在前端网这里 http://www.qdfuns.com/n ...
- Python3基础知识之元组、集合、字典
1.元组 元组特点元组是不可变的两个元组可以做加法,不能做减法 元组的方法 >>> S('a', 'b', 'c', 'd', 'e')>>> S=('a','b' ...
- 2017-06-21(rmdir mv ln)
rmdir rmdir 删除空目录 mv mv 剪切或修改命令 mv [原文件或目录] [目标文件] [原文件与目标文件在同一目录下视为修改,在不同目录下视为剪切] ln ln 链接命令[用于 ...
- node 在控制台打印有色彩的输出
在学习 node 过程中,因为没有找到有断点的调试方法,只能退而次之,在控制台打印调试. 但整个控制台的输出都是一种颜色,有时候很难找到自己需要的信息,这时,有颜色的打印就会帮上很大的忙. conso ...