夺命雷公狗---微信开发20----编写程序进行上传多媒体文件
2016-02-05 02:58
841 查看
我们在这个测试的时候要注意下php版本的问题,php版本要5.4以上才可以,亲测5.3失败
第一步获取token,创建一个get_token.php的文件,代码如下:
然后写一个方法将请求的内容放进函数中,创建一个common.php的模版文件进行统一管理
最后一步就是创建一个upload_media.php的文件这里就开始我们的重头戏文件上传的核心代码了,代码如下
然后进行访问http://weixin.showtp.com/upload_media.php,如果显示如下,恭喜您已经成功了
如果不知道是不是真的上传成功了,我们可以对她进行测试一下的,我们打开手册里的下载
然后我们写一个程序获取token值,创建一个get_token2.php的文件来进行获取,代码如下所示:
然后访问http://weixin.showtp.com/get_token2.php,如果返回的结果是这样,那么恭喜您已经获取到token值了
我们在回到刚才的那里
如果效验通过,那么下面就会和如下这样显示:
如果见到这样的界面恭喜您,您已经绝对是成功完成文件的上传了
第一步获取token,创建一个get_token.php的文件,代码如下:
<?php //原理,就是使用curl 函数,发出http请求,获取access_token $appid = 'wxed89d8f74fa6fc51'; $appsecret = 'd4624c36b6795d1d99dcf0547af5443d'; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}"; //这里我们将使用PHP的curl函数 //初识化 $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); //对返回的结果进行json解码 $jsoninfo = json_decode($output, true); $access_token = $jsoninfo['access_token'];
然后写一个方法将请求的内容放进函数中,创建一个common.php的模版文件进行统一管理
<?php $tmp_arr = array( 'text' => <<<XML <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0</FuncFlag> </xml> XML , 'image'=> <<<XML <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[image]]></MsgType> <Image> <MediaId><![CDATA[%s]]></MediaId> </Image> </xml> XML , 'voice'=> <<<XML <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[voice]]></MsgType> <Voice> <MediaId><![CDATA[%s]]></MediaId> </Voice> </xml> XML , 'music'=> <<<XML <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[music]]></MsgType> <Music> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <MusicUrl><![CDATA[%s]]></MusicUrl> <HQMusicUrl><![CDATA[%s]]></HQMusicUrl> </Music> </xml> XML , 'singlenews'=> <<<XML <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>1</ArticleCount> <Articles> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> </Articles> </xml> XML , 'newses'=> <<<XML <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>4</ArticleCount> <Articles> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> </Articles> </xml> XML ); //我把请求内容封装到函数中 function http_request($url, $data=null){ //我们使用curl函数 //初始化 $ch = curl_init(); //设置变量 curl_setopt($ch, CURLOPT_URL,$url); //这意思是,设置好发送的url地址发送到那 //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,$url); 这样的意思是对方要不要验证,如果不用则按照下面的即可 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE); //如果不用验证,这样即可 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,FALSE); //如果不用验证HOST主机这样即可 if(!empty($data)){ curl_setopt($ch,CURLOPT_POST,1);//启用时会发送一个常规的POST请求,就像表单提交的一样。 curl_setopt($ch,CURLOPT_POSTFIELDS,$data);//全部数据使用HTTP协议中的"POST"操作来 } curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出 //执行 $output = curl_exec($ch); //返回来的值是一个json格式的值 //关闭句柄 curl_close($ch); return $output; }
最后一步就是创建一个upload_media.php的文件这里就开始我们的重头戏文件上传的核心代码了,代码如下
<?php header('content-type:text/html;charset=utf-8'); require_once 'get_token.php'; require_once 'common.php'; //我们要上传的文件 $post = array('file' => '@hero.amr'); //hero.amr 是一个语音素材 //请求的地址 //媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb) $url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={$access_token}&type=voice"; $res = http_request($url, $post); //var_dump($res); //我们输出一下上传的文件的media_id $res_json = json_decode($res); $media_id = $res_json->media_id; echo "恭喜您文件已上传成功,media_id = {$media_id}";
然后进行访问http://weixin.showtp.com/upload_media.php,如果显示如下,恭喜您已经成功了
如果不知道是不是真的上传成功了,我们可以对她进行测试一下的,我们打开手册里的下载
然后我们写一个程序获取token值,创建一个get_token2.php的文件来进行获取,代码如下所示:
<?php //原理,就是使用curl函数,发出http请求,获取access_token $appid = 'wxed89d8f74fa6fc51'; $appsecret = 'd4624c36b6795d1d99dcf0547af5443d'; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}"; //我们使用curl函数 //初始化 $ch = curl_init(); //设置变量 curl_setopt($ch, CURLOPT_URL,$url); //这意思是,设置好发送的url地址发送到那 //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,$url); 这样的意思是对方要不要验证,如果不用则按照下面的即可 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE); //如果不用验证,这样即可 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,FALSE); //如果不用验证HOST主机这样即可 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出 //执行 $output = curl_exec($ch); //返回来的值是一个json格式的值 //关闭句柄 curl_close($ch); //对返回的json结果要将他转为一个数组 $jsoninfo = json_decode($output,true); //测试以下,看下是否拿到返的回数组 //var_dump($jsoninfo); $access_token = $jsoninfo['access_token']; echo $access_token;
然后访问http://weixin.showtp.com/get_token2.php,如果返回的结果是这样,那么恭喜您已经获取到token值了
我们在回到刚才的那里
如果效验通过,那么下面就会和如下这样显示:
如果见到这样的界面恭喜您,您已经绝对是成功完成文件的上传了
相关文章推荐
- Android 仿微信聊天时间格式化显示功能
- 一招叫你对付微信抢红包外挂
- Viewpager模仿微信主布局的三种方式 ViewPager,Fragment,ViewPager+FragmentPagerAdapter
- 《C#微信开发系列(2)-自定义菜单管理》
- 微信smali反编译 查看撤回消息
- 纯CSS实现一个微信logo,需要几个标签?
- 微信回复汇总
- 微信支付我遇到的问题
- 微信公众号开发者模式 定时任务 获取ACCESS_TOKEN
- 微信公众号OAuth 点击菜单按钮 跳转页面授权 获取openid
- 关于微信等业务识别的情况浅析
- 微信几处比较难的引用
- 微信公众平台官方示例分析
- 微信浏览器自带的返回上一页的停留位置
- 小C公众帮 获取微信公众号粉丝openid
- [转]ANDROID仿IOS微信滑动删除_SWIPELISTVIEW左滑删除例子
- 微信开发学习二 -- 微信开发入门(简单demo)
- 微信开发学习一 -- 微信开发环境搭建
- Android集成微信支付主要步骤和特别需要注意的问题
- 微信新消息,任务栏一闪一闪问题处理