美文网首页程序猿阵线联盟-汇总各类技术干货
Node开发微信公众号(4)——素材上传

Node开发微信公众号(4)——素材上传

作者: Mr绍君 | 来源:发表于2018-05-05 11:35 被阅读180次

    对于与微信公众号,我们可能不仅仅只是发文本,我们还需要发语音,视频之类的各种素材。所以,今天来说说素材上传。

    从微信文档上可以看出,依旧是post请求,然后传递文档流给微信服务器。

    所以,我们照例先配置config文件。

    {
        "appID": "wxd27649727105b6d2",
        "appScrect": "a3f2eb9f5819b0bf4b2a92a81f99baf4",
        "token": "wechat",
        "prefix": "https://api.weixin.qq.com/",
        "diyApi": {
            "getAccessToken": "%scgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",
            "createMenu": "%scgi-bin/menu/create?access_token=%s",
            "uploadFile": "%scgi-bin/media/upload?access_token=%s&type=%s"
        }
    }
    

    然后给WeChat添加一个素材上传的方法。

    // 素材上传
    WeChat.prototype.uploadFile = function(urlPath, type) {
        var that = this;
        return new Promise(function(resolve, reject) {
            that.getAccessToken().then(function(data){ 
                var form = { //构造表单
                    media: fs.createReadStream(urlPath)
                }
                var url = util.format(that.diyApi.uploadFile, that.prefix, data, type);
                that.requestPost(url, form).then(function(result) {
                    resolve(JSON.parse(result).media_id);
                })
            })
        })
    }
    

    当我们回复3的时候,把图片上传上去,并发送给用户。

    至此上传素材完成。素材上传的过程中主要有一点需要注意一下,一个是post请求的时候,需要给微信服务发送一个流文件,发送成功之后,服务器会返回一个media_id。

    这个mdedia_id就是该素材的id,后面如果我们需要对素材进行其他操作,都是这个id。

    如果xml是直接从开发文档复制的,一定要小心,可以在线格式化一下。


    源码地址:https://github.com/yeshaojun/wechatBase
    如果喜欢就给我点个小星星吧!

    相关文章

      网友评论

        本文标题:Node开发微信公众号(4)——素材上传

        本文链接:https://www.haomeiwen.com/subject/vzqtrftx.html