一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

群發(fā)圖片消息 - 傻瓜式微信開發(fā)教程22

 取經(jīng)悟能 2015-10-10
現(xiàn)在我們來學(xué)學(xué)習(xí)群發(fā)圖片消息.
其中的難點(diǎn)是把圖片上傳到微信的服務(wù)器獲取`media_id`,
這個(gè)步驟我足足調(diào)試了一天,而且很詭異的是我不知道為啥就調(diào)通了!!!

我們這次的目的是,
制作一個(gè)帶有上傳文件表單的網(wǎng)頁,然后在本地選擇文件后,
點(diǎn)擊上傳發(fā)送post請求,在post中

1.把本地的圖片上傳到SAE服務(wù)器.
2.把SAE獲取到的圖片上傳到微信的服務(wù)器,獲取到media_id.
3.調(diào)用群發(fā)接口發(fā)送圖片消息,圖片的參數(shù)為我們剛獲取到的media_id.

這個(gè)網(wǎng)頁的名字為`sendimg.php`.

因?yàn)榘褕D片上傳到微信服務(wù)器過程中一直返回`文件類型錯(cuò)誤`,
所以我們寫了一個(gè)網(wǎng)頁來檢測我們上傳的文件類型到底對不對!!!

這個(gè)網(wǎng)頁的名字叫做`getfile.php`.

在`sendimg.php`網(wǎng)頁中,我們判斷是GET請求還是POST請求,
如果是`GET`我們返回一個(gè)上傳表單,如果是POST我們讀取本地的圖片信息并調(diào)用各種api.

  1. <?php
  2.     // 通過 REQUEST_METHOD 字段判斷是否為GET
  3.     function isGet(){
  4.       return $_SERVER['REQUEST_METHOD'] == 'GET' ? true : false;
  5.     }

  6.     if(isGet()){
  7.         // GET請求 返回一個(gè)表單
  8.         // 提交時(shí)會post倒本頁
  9.         $html = <<<TXT
  10.         <html>
  11.         <head>
  12.         <title>SAE上傳文件到storage 實(shí)例演示</title>
  13.         </head>
  14.         <body>
  15.             <form action="sendimg.php"  method="post" enctype="multipart/form-data">
  16.             <input type="file"  name="file" />
  17.             <input type="submit" value="submit">
  18.             </form>
  19.         </body>
  20.         </html>
  21. TXT;
  22.         echo $html;
  23.     }
  24.     else{
  25.         // 獲取信息
  26.         // 處理各種api
  27.     }
  28. ?>
復(fù)制代碼


下面我們逐個(gè)介紹POST中需要用到的東西,我們要定義調(diào)用api中需要使用到的數(shù)據(jù)

  1. // 各種數(shù)據(jù)
  2. $appid = 'xxxx';
  3. $appsecret = 'xxxx';
  4. $token = '';
  5. $domain = 'xxxx';
復(fù)制代碼


獲取token的函數(shù):

  1. function getToken(){
  2.     // 全局變量在函數(shù)里是不可可見的
  3.     // 需要手動指定一下
  4.     global $appid;
  5.     global $appsecret;
  6.     global $token;

  7.     if('' != $token){
  8.         return $token;
  9.     }

  10.     // 構(gòu)建獲取access_token的url
  11.     $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";
  12.     // 構(gòu)建http請求并執(zhí)行
  13.     $ch = curl_init();
  14.     curl_setopt($ch, CURLOPT_URL, $url);
  15.     curl_setopt($ch, CURLOPT_HEADER, false);
  16.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  17.     $result=curl_exec($ch);
  18.     curl_close($ch);
  19.     // 解析返回的json數(shù)據(jù)
  20.     $jsoninfo = json_decode($result);
  21.     // 讀取json中的access_token字段
  22.     $token = $jsoninfo->access_token;

  23.     return $token;
  24. }
復(fù)制代碼


獲取到剛才提交的文件信息
  1. // 文件名
  2. $file_name = $_FILES["file"]["name"];
  3. // 文件類型
  4. $file_type = $_FILES["file"]["type"];
  5. // SAE服務(wù)器上文件臨時(shí)存貯地址
  6. $file_path = $_FILES["file"]["tmp_name"];
復(fù)制代碼


上傳接收到的圖片到微信的服務(wù)器

  1. function uploadImage($file_name, $file_path, $file_type){
  2.     global $domain;
  3.     $token = getToken();
  4.     // 檢測md5是否為我們上傳的圖片
  5.     // 因?yàn)槲⑿耪f我文件類型不對
  6.     echo md5(file_get_contents($file_path));
  7.     echo "<br>";

  8.     // 為文件起一個(gè)新名字
  9.     // 萬一因?yàn)橛兄形奈⑿耪f我文件類型不對呢
  10.     $uplodetime = date("ymdHis");
  11.     $file_ext = explode(".", $file_name);
  12.     $file_ext = array_pop($file_ext);
  13.     $file_ext = trim($file_ext);
  14.     $file_ext = strtolower($file_ext);
  15.     $new_file_name = $uplodetime . "." . $file_ext;

  16.     $url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={$token}";
  17.     // ok,這里是重點(diǎn)了
  18.     // 要構(gòu)造一個(gè)curl上傳文件的數(shù)據(jù)
  19.     // 1.@文件全路徑
  20.     // 2.偽造一個(gè)文件名,后綴要和我們本地的圖片同意
  21.     // 3.type 類似image/png之類的, 可以獲取到
  22.     $info_str = "@{$file_path};filename={$new_file_name};type={$file_type}";
  23.     $fields['media'] = $info_str;

  24.     $ch = curl_init($url);  // 準(zhǔn)備POST
  25.     curl_setopt($ch, CURLOPT_HEADER, false);
  26.     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  27.     curl_setopt($ch, CURLOPT_POST,1);
  28.     curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
  29.     $responce = curl_exec($ch); // 執(zhí)行POST

  30.     // 執(zhí)行完成后看看微信返回給我們的結(jié)果
  31.     // 如果告訴我們不對,把這個(gè)地址切換到我們的getfile.php,看看是不是真的有問題
  32.     // getfile會回顯上傳文件的信息
  33.     var_dump($responce);
  34.     echo "<br>";

  35.     $responce = json_decode($responce);

  36.     if(isset($responce->media_id)){
  37.         return $responce->media_id;
  38.     }
  39.     return false;
  40. }
復(fù)制代碼


如果正確獲得了`media_id`,我們就可以掉用群發(fā)的api了,這個(gè)就很簡單了:
  1. function sendImageMsg($media_id){
  2.     $token = getToken();

  3.     $url = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token={$token}";
  4.     $arrayData = array(
  5.       'filter' => array(
  6.         'is_to_all' => true
  7.       ),
  8.       'image' => array(
  9.         'media_id' => $media_id
  10.       ),
  11.       'msgtype' => 'image'
  12.     );
  13.     $sendJsonData = json_encode($arrayData);

  14.     $ch = curl_init($url);
  15.     curl_setopt($ch, CURLOPT_HEADER, false);
  16.     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  17.     curl_setopt($ch, CURLOPT_POST,1);
  18.     curl_setopt($ch, CURLOPT_POSTFIELDS, $sendJsonData);
  19.     var_dump(curl_exec($ch));
  20. }
復(fù)制代碼


另外我們的`getfile.php`也很簡單
  1. <?php
  2.     echo $_FILES["media"]["name"] . "<br>";
  3.     echo $_FILES["media"]["type"] . "<br>";
  4.     echo $_FILES["media"]["size"] . "<br>";
  5.     echo $_FILES["media"]["tmp_name"] . "<br>";
  6.     echo $_FILES["media"]["error"] . "<br>";

  7.     echo md5(file_get_contents($_FILES["media"]["tmp_name"]));
  8. ?>
復(fù)制代碼


上傳到sae后我們就可以通過訪問這個(gè)網(wǎng)頁群發(fā)圖片消息了!!!!
悲劇的是,我的群發(fā)調(diào)用次數(shù)超過配額了!!!

全部的代碼在附件中:
游客,如果您要查看本帖隱藏內(nèi)容請回復(fù)

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    成人午夜激情免费在线| 国产乱淫av一区二区三区| 欧美精品一区二区三区白虎| 日本熟妇五十一区二区三区| 日韩精品亚洲精品国产精品| 字幕日本欧美一区二区| 日本精品免费在线观看| 日本东京热加勒比一区二区 | 日韩欧美一区二区黄色| 国产香蕉国产精品偷在线观看| 不卡中文字幕在线免费看| 久久人妻人人澡人人妻| 欧美日韩有码一二三区| 亚洲综合激情另类专区老铁性| 青青操精品视频在线观看| 日韩免费国产91在线| 欧美日韩亚洲精品在线观看| 国产精品涩涩成人一区二区三区 | 亚洲伊人久久精品国产| 国产色偷丝袜麻豆亚洲| 老司机精品视频免费入口| 亚洲一区二区欧美激情| 四十女人口红哪个色好看| 美女黄片大全在线观看| 国产不卡在线免费观看视频| 午夜福利大片亚洲一区| 99久久国产精品免费| 在线欧洲免费无线码二区免费| 亚洲午夜福利不卡片在线 | 亚洲高清中文字幕一区二区三区| 亚洲a级一区二区不卡| 国产麻豆视频一二三区| 日韩18一区二区三区| 色婷婷激情五月天丁香| 日木乱偷人妻中文字幕在线| 中文字幕人妻日本一区二区| 国产精品亚洲欧美一区麻豆| 亚洲精品小视频在线观看| 视频一区日韩经典中文字幕| 国产伦精品一区二区三区精品视频| 玩弄人妻少妇一区二区桃花|