请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

errcode: 41005,mediaId: undefined,上传临时图片素材时提示的错误

content发送1-4之间的消息能够正常回复,一发5、6就不行,看后台的情况是无法获取到data

https://img1.sycdn.imooc.com/szimg//581564ff0001ec9e10801920.jpg

https://img1.sycdn.imooc.com/szimg//5815664f0001f87f12230719.jpg

代码如下:

		else if (content === '5'){
			var data = yield wechatApi.uploadMaterial('image',path.join(__dirname,'/2.jpg'))
			
			reply = {
				type: 'image',
				mediaId: data.media_id
			}
			console.log(data)
			console.log(reply)
		}	
Wechat.prototype.uploadMaterial = function(type, filepath){
    var that = this
    var form = {//构造一个表单
        media: fs.createReadStream(filepath)
    }

    var appID = this.appID
    var appSecret = this.appSecret
    // var url = api.accessToken + '&appid=' + appID + '&secret=' + appSecret


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

            request({methos: 'POST',url: url, formData:form, json: 
                true}).then(function(response){
                    var _data = response[1]

                    if(_data){
                        resolve(_data)
                        console.log(_data)
                    }
                    else{
                        throw new Error('Upload material fails')
                    }
                })
                .catch(function(err){
                    reject(err)
                })
            })
    })
}


正在回答 回答被采纳积分+3

3回答

Scott 2016-10-30 13:10:24

用 response.body 代替 response[1] 试试看呢

0 回复 有任何疑惑可以回复我~
  • 提问者 星辰Iron #1
    直接报错了
    回复 有任何疑惑可以回复我~ 2016-10-31 09:27:37
提问者 星辰Iron 2016-10-31 09:45:43

找到问题所在了,原来是我那个method拼错了。

0 回复 有任何疑惑可以回复我~
  • Koyee #1
    有可能是你那个api没有写成如下的样子, 一定要认真阅读官方的开发文档
    var api = {
    	accessToken: prefix + 'token?grant_type=client_credential',
    	upload: prefix + 'media/upload?'
    }
    回复 有任何疑惑可以回复我~ 2017-06-12 16:11:42
提问者 星辰Iron 2016-10-31 09:29:28

 用 response.body 代替 response[1]之后报错如下:

 Error: Upload material fails

      at E:\Users\wechat-master\wechat\wechat.js:127:31

      at tryCatcher (E:\Users\wechat-master\node_modules\bluebird\js\main\util.j

s:26:23)

      at Promise._settlePromiseFromHandler (E:\Users\wechat-master\node_modules\

bluebird\js\main\promise.js:507:31)

      at Promise._settlePromiseAt (E:\Users\wechat-master\node_modules\bluebird\

js\main\promise.js:581:18)

      at Promise._settlePromises (E:\Users\wechat-master\node_modules\bluebird\j

s\main\promise.js:697:14)

      at Async._drainQueue (E:\Users\wechat-master\node_modules\bluebird\js\main

\async.js:123:16)

      at Async._drainQueues (E:\Users\wechat-master\node_modules\bluebird\js\mai

n\async.js:133:10)

      at Immediate.Async.drainQueues [as _onImmediate] (E:\Users\wechat-master\n

ode_modules\bluebird\js\main\async.js:15:14)

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信