console.log(reply)media_id显示为undefined?

来源:4-4 第四天 上传临时素材之图片和视频

qq_十五人五_0

2016-05-26

weixin.js代码

else if(content==='5'){
                       var data=yield wechatApi.uploadMaterial('image',__dirname+'/2.jpg')
           reply={
            type:'image',
            mediaId:data.media_id,
           
           }
         console.log(reply);

tpl.js代码

<% } else if(msgType==='image'){ %>
                 	<Image>
<MediaId><![CDATA[<%= content.mediaId %>]]></MediaId>
</Image>
                 <% } else if(msgType==='voice'){ %>

wechat.代码

Wechat.prototype.uploadMaterial = function(type,filepath){
  var that=this;
  var form={//构造一个表单
    media : fs.createReadStream(filepath)
  }


  return new Promise(function(resolve,reject){//Promise 实例
   that
      .fetchAccessToken()
      .then(function(data){
        var url=api.upload+'access_token='+data.access_token+'&type='+type;

    request({method:'POST',url:url,formData:form,json:true})
    .then(function(response){//请求,
      var _data=response.body;//response[1]
     if(_data){
      resolve(_data)
     }else{
      throw new Error('Upload material fails')
     }
      
    })
     .catch(function(err){
      reject(err);
     })
      })
  })
}

控制台输出

http://szimg.mukewang.com/5746f9ad000179bb04590230.jpg


写回答

2回答

Scott

2016-05-26

windows 系统下面应该是需要拼接一下正确的路径 __dirname+'/2.jpg') 改成 path.join(__dirname, '/2.jpg')  试试


然后打印下 data,不要打印 reply 看看拿到的 data 是什么数据

1
2
qq_十五人五_0
非常感谢!
2016-05-27
共2条回复

AssassinX

2016-08-27

还有一种可能是根本就没有获取到需要的data。我就遇到过Api接口未授权的情况,返回的data有这么一段:errMsg: 'api unauthorized'

0
3
Mayi007
我是用了公众号测试号,为什么还是返回errMsg: 'api unauthorized',不是应该有权限了吗
2016-11-22
共3条回复

7天搞定Node.js微信公众号

Koa框架、ES2015新特性、MongoDB,开发微信公众号

1742 学习 · 787 问题

查看课程