wechat4u
wechat4u copied to clipboard
uploadMedia 好像不起作用,是不是微信协议变了
uploadMedia 好像不起作用,是不是微信协议变了
还能用吧,你看看run-core.js里的例子,都能行的
谢谢你的回复,例子里面的我测试了不可以了,发送不了图片报错。我看了微信的网页版协议是有变化,我修改了协议部分现在可以了。
是么,那你在浏览器上登录微信之后,是在哪个域下? wx还是wx2还是其他的?
在wx, 然后使用了MULTI发送
我也是在wx.qq.com下,可是我这里还没有出现问题
能把你改过的改吗贴出来看看么
//上传媒体文件 uploadMedia(fullfilename, rename, toUserName){
let mediatype;
let type = mime.lookup(fullfilename);
let size = fs.statSync(fullfilename).size;
let filename = rename?rename:path.basename(fullfilename);
let mediaId = this.mediaSend++
//let clientMsgId = +new Date() + '0' + Math.random().toString().substring(2, 5)
let clientMsgId = getClientMsgId()
let uploadMediaRequest = JSON.stringify({
BaseRequest: this.getBaseRequest(),
ClientMediaId: clientMsgId,
TotalLen: size,
StartPos: 0,
DataLen: size,
MediaType: 4,
FromUserName: this.user.UserName,
ToUserName: toUserName || this.user.UserName
})
let ext = filename.match(/.*\.(.*)/)
if (ext) {
ext = ext[1].toLowerCase()
} else {
ext = ''
}
switch (ext) {
case 'bmp':
case 'jpeg':
case 'jpg':
case 'png':
mediatype = 'pic'
break
case 'mp4':
mediatype = 'video'
break
default:
mediatype = 'doc'
}
let form = [];
form.push({
name: 'id',
value: 'WU_FILE_' + mediaId
});
form.push({
name: 'name',
value: filename
});
form.push({
name: 'type',
value: type
});
form.push({
name: 'lastModifieDate',
value: new Date().toGMTString()
});
form.push({
name: 'size',
value: size
});
form.push({
name: 'mediatype',
value: mediatype
}); //'doc'
form.push({
name: 'uploadmediarequest',
value: uploadMediaRequest
});
form.push({
name: 'webwx_data_ticket',
value: this.PROP.webwxDataTicket
});
form.push({
name: 'pass_ticket',
value: encodeURI(this.PROP.passTicket)
});
form.push({
name: 'filename',
filename: fullfilename
});
let params = {
f: 'json'
}
let headers = {
'Connection':'keep-alive',
'Accept':'*/*',
'Accept-Encoding':'gzip, deflate, br',
'Accept-Language':'zh-CN,zh;q=0.8',
'Host':'file.wx.qq.com',
'Origin':'https://wx.qq.com',
'Referer':'https://wx.qq.com/',
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36'
};
return this.requestAdapter.R({
url: this.CONF.API_webwxuploadmedia,
method: 'MULTI',
headers:headers,
params: params,
data: form
}).then(function(res) {
var mediaId = res.data.MediaId
if (!mediaId) {
throw new Error('MediaId获取失败')
}
return {
name: filename,
size: size,
ext: ext,
mediatype: mediatype,
mediaId: mediaId
}
}).catch(function(err) {
debug(err)
throw new Error('上传图片失败')
})
}
requestAdapter.R 这个方法使用了 poorequest 这个插件的MULTI发送
请问解决了吗? 我这边貌似uploadMedia不起作用了, 没有任何返回,也不报错