微信公众平台模拟登陆上传素材(求助nodejs转php)
MPWechat.prototype.uploadMedia = function(medianame,reqData,callback){<br /> tools.log('uploadMedia start ...');<br /> var boundary = 'tvmin';<br /> var max = 9007199254740992;<br /> var dec = Math.random() * max;<br /> var hex = boundary + dec.toString(36);<br /> var mimes = {<br /> //image<br /> '.bmp': 'image/bmp',<br /> '.png': 'image/png',<br /> '.gif': 'image/gif',<br /> '.jpg': 'image/jpeg',<br /> '.jpeg': 'image/jpeg',<br /> /oice<br /> '.mp3': 'audio/mp3',<br /> '.wav': 'audio/x-wav',<br /> '.amr': 'audior',<br /> '.wma': 'audio/x-ms-wma',<br /> /ideo<br /> '.mp4': 'video/mp4',<br /> '.rm': 'video/rm',<br /> '.rmvb': 'videond.rn-realvideo',<br /> '.wmv': 'video/x-ms-wmv',<br /> '.avi': 'video/x-msvideo',<br /> '.mpg': 'video/mpeg',<br /> '.mpeg': 'video/mpeg'<br /> };<br /> var ext = path.extname(medianame).toLowerCase();<br /> var mime = mimes[ext];<br /> var boundaryKey = '----WebKitFormBoundary' + hex;<br /> var payload = '\r\n\r\n--' + boundaryKey + '\r\n'<br /> + 'Content-Disposition: form-data; name="uploadfile"; filename="'+ medianame +'"\r\n'<br /> + 'Content-Type: '+ mime +'\r\n\r\n';<br /> var enddata = '\r\n--' + boundaryKey + '\r\n'<br /> + 'Content-Disposition: form-data; name="formId"\r\n\r\n'<br /> + '--' + boundaryKey + '--';<br /> var contentLength = Buffer.byteLength(payload,'utf8') + reqData.length + Buffer.byteLength(enddata,'utf8');<br /> var options = {<br /> host: host,<br /> port: 443,<br /> method: 'POST',<br /> path: '/cgi-bin/uploadmaterial?cgi=uploadmaterial&type=0&token='+ this.token +'&t=iframe-uploadfile&lang=zh_CN&formId=null',<br /> headers: {<br /> 'Content-Type': 'multipart/form-data; boundary='+boundaryKey,<br /> 'Content-Length': contentLength,<br /> 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31',<br /> 'Cookie': this.cookie,<br /> 'Referer': 'https://'+ host +'/cgi-bin/indexpage?token='+ this.token +'&lang=zh_CN&t=wxm-upload&lang=zh_CN&type=0&fromId=file_from_1341151893625'<br /> }<br /> };<br /> var req = https.request(options, function(response) {<br /> var statusCode = response.statusCode;<br />// console.lo<strong>*本文来@源gao@daima#com搞(%代@#码@网2</strong><pre>搞代gaodaima码
g(‘STATUS: ‘ + statusCode,options);
response.setEncoding(‘utf8’);
var data = ”;
response.on(‘data’, function(chunk) {
data += chunk;
}).on(‘end’,function(){
callback(data.match(/formId, ‘(\d+)’/)[1]);
});
});
req.write(payload,’utf8′);
req.write(reqData,’binary’);
req.write(enddata,’utf8′);
req.end();
req.on(‘error’, function(e) {