解决微信上传临时素材
2016-12-01 16:30
134 查看
一、简单的写一个html页面用来提交文件
二、处理上传的文件
三、执行的结果
{"type":"image","media_id":"iR9397zl0j-Jr6wQpGhjc4rM-Nq4GaepLXhxiCd_8N2gBBoAk-J1nkk2l33Em94L","created_at":1480575046}
四、注意
1.php的版本
php5.5.0中添加 默认值FALSE php5.6.0中默认值为TRUE
CURLOPT_SAVE_UPLOAD的值为TRUE禁用@前缀CURLOPT_POSTFIELDS中发送邮件。意味着@可以在字段中安全的使用了
PHP 5.5.0 中添加,默认值
FALSE。 PHP 5.6.0 改默认值为
TRUE。
2.路径
一定要使用绝对路劲
在windows下为@D:\www\apache\images\dudj.jpg
在linux下@home/apache/picture/lkk.jpg
一定要注意红色部分和注意点
<html> <form action="add_media.php" method="post" enctype="multipart/form-data"> <input type="file" name="media"/> <input type="submit" value="上传"/> </form> </html>
二、处理上传的文件
<?php /** * Created by PhpStorm. * User: dudongjiang * Date: 2016/12/1 * Time: 10:10 * effort: 微信素材上传 */ /** * @param $file_info * @return bool|mixed * @effort 处理 */ function add_material($file_info){ $path = $file_info['media']['name']; $type = 'image'; $access_token=get_access_token(); $url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=$access_token&type=$type"; $ch1 = curl_init (); curl_setopt ( $ch1, CURLOPT_SAFE_UPLOAD, false); $filepath = dirname(__FILE__)."\/$path"; $data= array('media'=>"@".$filepath); curl_setopt($ch1, CURLOPT_URL, $url); curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)){ curl_setopt($ch1, CURLOPT_POST, 1); curl_setopt($ch1, CURLOPT_POSTFIELDS, $data); } curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec ( $ch1 ); curl_close ( $ch1 ); return $result; } /** * @return mixed * @effort 将微信自带的验证缓存起来 防止超限 */ function get_access_token() { $tokenFile = "./access_token.txt";//缓存文件名 $data = json_decode(file_get_contents($tokenFile)); if ($data->expire_time < time() or !$data->expire_time) { $appid = "自己的appid"; $appsecret = "自己的appsecret"; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; $res = getJson($url); $access_token = $res['access_token']; if($access_token) { $newdata['expire_time'] = time() + 7000; $newdata['access_token'] = $access_token; $fp = fopen($tokenFile, "w"); fwrite($fp, json_encode($newdata)); fclose($fp); } } else { $access_token = $data->access_token; } return $access_token; } //取得微信返回的JSON数据 function getJson($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL ,$url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER ,FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST ,FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); $output = curl_exec($ch); curl_close($ch); return json_decode($output, true); } $result = add_material($_FILES); var_dump($result);
三、执行的结果
{"type":"image","media_id":"iR9397zl0j-Jr6wQpGhjc4rM-Nq4GaepLXhxiCd_8N2gBBoAk-J1nkk2l33Em94L","created_at":1480575046}
四、注意
1.php的版本
php5.5.0中添加 默认值FALSE php5.6.0中默认值为TRUE
CURLOPT_SAVE_UPLOAD的值为TRUE禁用@前缀CURLOPT_POSTFIELDS中发送邮件。意味着@可以在字段中安全的使用了
PHP 5.5.0 中添加,默认值
FALSE。 PHP 5.6.0 改默认值为
TRUE。
2.路径
一定要使用绝对路劲
在windows下为@D:\www\apache\images\dudj.jpg
在linux下@home/apache/picture/lkk.jpg
一定要注意红色部分和注意点
相关文章推荐
- 微信上传下载临时素材
- 微信上传网络图片到临时素材
- 如何向微信服务器上传临时素材
- 微信上传临时素材到httpclient上传文件引发的问题
- java实现上传网络图片到微信临时素材
- 微信开发【素材管理】上传临时素材
- 【企业微信开发笔记】调用上传临时素材文件接口报empty media data错误
- php 微信开发之新增上传/获取下载临时素材
- HttpClient上传文件到微信素材乱码问题解决
- php微信开发之上传临时素材
- 微信上传素材 {"errcode":41005,"errmsg":"media data missing"} 解决方法和思路
- php上传公众号临时素材-微信开发素材管理6
- 公众号上传视频语音素材,公众平台临时素材开发,微信开发素材管理7
- 微信上传临时素材的坑
- 微信上传临时素材 。 php7.1.3 总是报41005 最佳解决方案
- Java企业微信开发_06_素材管理之上传本地临时素材文件至微信服务器
- httpClient 向微信服务器上传临时图片素材
- thinkphp微信上传永久素材报41005错误解决办法
- 使用httpclient4.3.2来实现微信临时素材的上传