最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解nodejs微信公眾號(hào)開發(fā)——5.素材管理接口

 更新時(shí)間:2017年04月11日 17:03:13   作者:芒果屋里的貓  
這篇文章主要介紹了詳解nodejs微信公眾號(hào)開發(fā)——5.素材管理接口,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

上一篇文章:nodejs微信公眾號(hào)開發(fā)——4.自動(dòng)回復(fù)各種消息,我們實(shí)現(xiàn)了被動(dòng)回復(fù)文字和圖文,回復(fù)圖片失敗,因?yàn)樾枰全@取通過素材管理接口上傳多媒體文件而得到的MediaId,這一節(jié)們就來實(shí)現(xiàn)素材管理的接口??蓞⒖矗?a target="_blank" rel="external nofollow" >公眾平臺(tái)開發(fā)者文檔

1. 新增臨時(shí)素材

臨時(shí)素材顧名思義是臨時(shí)的,上傳后一定時(shí)間就被清理掉,適用于一些有時(shí)效性的圖文鏈接。關(guān)于臨時(shí)素材需要注意的點(diǎn):

  1. 對(duì)于臨時(shí)素材,每個(gè)素材(media_id)會(huì)在開發(fā)者上傳或粉絲發(fā)送到微信服務(wù)器3天后自動(dòng)刪除(所以用戶發(fā)送給開發(fā)者的素材,若開發(fā)者需要,應(yīng)盡快下載到本地),以節(jié)省服務(wù)器資源。
  2. media_id是可復(fù)用的。
  3. 素材的格式大小等要求與公眾平臺(tái)官網(wǎng)一致。具體是,圖片大小不超過2M,支持bmp/png/jpeg/jpg/gif格式,語音大小不超過5M,長(zhǎng)度不超過60秒,支持mp3/wma/wav/amr格式
  4. 需使用https調(diào)用本接口。

請(qǐng)求地址:https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE

1.1 實(shí)現(xiàn)uploadTempMaterial方法

uploadTempMaterial是用來上傳臨時(shí)素材,直接在Wechat的原型鏈上添加:

Wechat.prototype.uploadTempMaterial = function(type,filepath){
  var that = this;
  var form = { //構(gòu)造表單
    media:fs.createReadStream(filepath)
  }
  return new Promise(function(resolve,reject){
    that.fetchAccessToken().then(function(data){

      var url = api.uploadMaterial + 'access_token=' + data.access_token + '&type=' + type;
      request({url:url,method:'POST',formData:form,json:true}).then(function(response){
        var _data = response.body;
        if(_data){
          resolve(_data)
        }else{
          throw new Error('upload material failed!');
        }
      }).catch(function(err){
        reject(err);
      });
    });
  });
}

代碼中的fetchAccessToken用以獲取access_token,修改回復(fù)數(shù)字2的代碼:

else if(content === '2'){
  var data = yield wechatApi.uploadTempMaterial('image',__dirname+'/public/king.jpg');
  reply = {
    type:'image',
    mediaId:data.media_id
  }
}

先將本地的一張圖片上傳到臨時(shí)素材接口,獲取media_id,封裝到回復(fù)消息里面去。同樣的方法適用于語音,視頻等:

2. 新增永久素材

永久素材回永遠(yuǎn)存儲(chǔ)在微信后臺(tái)服務(wù)器上,永不失效。關(guān)于永久素材有一下幾個(gè)特點(diǎn):

  1. 新增的永久素材也可以在公眾平臺(tái)官網(wǎng)素材管理模塊中看到
  2. 永久素材的數(shù)量是有上限的,請(qǐng)謹(jǐn)慎新增。圖文消息素材和圖片素材的上限為5000,其他類型為1000
  3. 素材的格式大小等要求與公眾平臺(tái)官網(wǎng)一致。具體是,圖片大小不超過2M,支持bmp/png/jpeg/jpg/gif格式,語音大小不超過5M,長(zhǎng)度不超過60秒,支持mp3/wma/wav/amr格式
  4. 調(diào)用該接口需https協(xié)議

新增永久圖文素材請(qǐng)求地址:https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN

新增永久圖片請(qǐng)求地址:https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN

新增其他類型永久素材請(qǐng)求地址:https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN

2.1 實(shí)現(xiàn)uploadPermMaterial方法

uploadPermMaterialuploadTempMaterial方法基本是類似的,只是永久素材的的上傳分為三類,需要判斷一下傳入的類型。

Wechat.prototype.uploadPermMaterial = function(type,material){
  var that = this;
  var form = {}
  var uploadUrl = '';
  if(type === 'pic') uploadUrl = api.uploadPermPics;
  if(type === 'other') uploadUrl = api.uploadPermOther;
  if(type === 'news'){
    uploadUrl = api.uploadPermNews;
    form = material
  }else{
    form.media = fs.createReadStream(material);
  }
  return new Promise(function(resolve,reject){
    that.fetchAccessToken().then(function(data){
      var url = uploadUrl + 'access_token=' + data.access_token;
      var opts = {
        method:'POST',
        url:url,
        json:true
      }
      (type == 'news') ? (opts.body = form) : (opts.formData = form); //上傳數(shù)據(jù)的方式不同
      request(opts).then(function(response){
        var _data = response.body;
        if(_data){
          resolve(_data)
        }else{
          throw new Error('upload permanent material failed!');
        }
      }).catch(function(err){
        reject(err);
      });
    });
  });
}

:雖然實(shí)現(xiàn)了永久素材上傳,但是測(cè)試賬號(hào)也不是每一次都能測(cè)試成功,未經(jīng)過認(rèn)證的訂閱號(hào)也不支持永久素材的上傳。

3. 獲取素材鏈接

由于獲取臨時(shí)素材和獲取永久素材的差異性不大,直接放在一個(gè)函數(shù)里完成。

Wechat.prototype.getMaterial = function(mediaId,permanent){
  var that = this;
  var getUrl = permanent ? api.getPermMaterial : api.getTempMaterial;
  return new Promise(function(resolve,reject){
    that.fetchAccessToken().then(function(data){
      var url = getUrl + 'access_token=' + data.access_token;
      if(!permanent) url += '&media_id=' + mediaId;
      resolve(url)
    });
  });
}

4. 刪除永久素材

刪除永久素材就比較簡(jiǎn)單了,只需傳入一個(gè)mediaId即可:

Wechat.prototype.delMaterial = function(mediaId){
  var that = this;
  return new Promise(function(resolve,reject){
    that.fetchAccessToken().then(function(data){
      var url = api.delPermMaterial + 'access_token=' + data.access_token;
      var form = {media_id:mediaId}
      request({url:url,method:'POST',formData:form,json:true}).then(function(response){
        var _data = response.body;
        if(_data.errcode === '0'){
          resolve();
        }else{
          throw new Error('delete permanent material failed!');
        }
      }).catch(function(err){
        reject(err);
      });
    });
  });
}

5.其他

還有修改永久圖文素材、獲取素材總數(shù)、獲取素材列表功能由于本項(xiàng)目中不會(huì)用到,就不一一實(shí)現(xiàn)了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • node內(nèi)存泄漏排查與修復(fù)過程

    node內(nèi)存泄漏排查與修復(fù)過程

    之前開發(fā)了一個(gè)node接口,該接口使用canvas繪制產(chǎn)品圖提供給java端使用,在運(yùn)行了一段時(shí)間后發(fā)現(xiàn)了內(nèi)存泄漏問題,本文淺記下修復(fù)過程,文章通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • node.js連接mongoDB數(shù)據(jù)庫(kù) 快速搭建自己的web服務(wù)

    node.js連接mongoDB數(shù)據(jù)庫(kù) 快速搭建自己的web服務(wù)

    這篇文章主要為大家詳細(xì)介紹了node.js連接mongoDB數(shù)據(jù)庫(kù),如何快速搭建自己的web服務(wù),感興趣的小伙伴們可以參考一下
    2016-04-04
  • Node.js中Swagger的使用指南詳解

    Node.js中Swagger的使用指南詳解

    Swagger(目前用OpenAPI?Specification代替)是一個(gè)用于設(shè)計(jì)、構(gòu)建、記錄和使用REST?API的強(qiáng)大工具,本文將探討使用Swagger的一些關(guān)鍵技巧,需要的可以參考一下
    2024-01-01
  • node.js報(bào)錯(cuò):npm?ERR?code?EPERM的解決過程

    node.js報(bào)錯(cuò):npm?ERR?code?EPERM的解決過程

    在學(xué)習(xí)vue+typescript的時(shí)候突然發(fā)現(xiàn)了個(gè)錯(cuò)誤,所以下面這篇文章主要給大家介紹了關(guān)于node.js報(bào)錯(cuò):npm?ERR?code?EPERM的詳細(xì)解決過程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • node通過express搭建自己的服務(wù)器

    node通過express搭建自己的服務(wù)器

    本篇文章主要介紹了node通過express搭建自己的服務(wù)器 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 利用express啟動(dòng)一個(gè)server服務(wù)的方法

    利用express啟動(dòng)一個(gè)server服務(wù)的方法

    下面小編就為大家?guī)硪黄胑xpress啟動(dòng)一個(gè)server服務(wù)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 深入淺出了解Node.js Streams

    深入淺出了解Node.js Streams

    這篇文章講了了解流的用途,為什么它們?nèi)绱酥匾?,以及如何使用它們。下面我們來一起學(xué)習(xí)吧
    2019-05-05
  • NodeJS提供了的文件操作相關(guān)的API

    NodeJS提供了的文件操作相關(guān)的API

    讓前端覺得如獲神器的不是NodeJS能做網(wǎng)絡(luò)編程,而是NodeJS能夠操作文件,小至文件查找,大至代碼編譯,幾乎沒有一個(gè)前端工具不操作文件,換個(gè)角度講,幾乎也只需要一些數(shù)據(jù)處理邏輯,再加上一些文件操作,就能夠編寫出大多數(shù)前端工具
    2023-11-11
  • NodeJS處理Express中異步錯(cuò)誤

    NodeJS處理Express中異步錯(cuò)誤

    本文主要闡述如何在 Express 中使用錯(cuò)誤處理中間件(error-handling middleware)來高效處理異步錯(cuò)誤。在 Github 上有對(duì)應(yīng) 代碼實(shí)例 可供參考。
    2017-03-03
  • Node.js中代碼重復(fù)與不一致的問題及解決方案

    Node.js中代碼重復(fù)與不一致的問題及解決方案

    在 Node.js 開發(fā)中,代碼重復(fù)和不一致是常見的問題,尤其是在項(xiàng)目規(guī)模擴(kuò)大和團(tuán)隊(duì)協(xié)作時(shí),這些問題不僅會(huì)增加維護(hù)成本,還可能導(dǎo)致邏輯錯(cuò)誤和性能問題,本文將探討這些問題的常見原因,并提供相應(yīng)的解決方案,需要的朋友可以參考下
    2025-03-03

最新評(píng)論

云和县| 绵竹市| 宜章县| 连山| 平陆县| 黄骅市| 松溪县| 马山县| 常德市| 商河县| 扎鲁特旗| 黔西县| 百色市| 嵊泗县| 体育| 麦盖提县| 治多县| 周宁县| 石首市| 龙岩市| 嘉鱼县| 连城县| 小金县| 安吉县| 长兴县| 赤壁市| 杭州市| 尤溪县| 镇江市| 平顶山市| 紫云| 宁强县| 蕲春县| 东乡| 平塘县| 台中市| 綦江县| 万山特区| 大宁县| 阳江市| 酉阳|