Maison  >  Article  >  développement back-end  >  微信公众平台模拟登陆上传素材(nodejs转php)

微信公众平台模拟登陆上传素材(nodejs转php)

WBOY
WBOYoriginal
2016-06-13 12:34:19875parcourir

微信公众平台模拟登陆上传素材(求助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.log('STATUS: ' + statusCode,options);<br>
        response.setEncoding('utf8');<br>
        var data = '';<br>
        response.on('data', function(chunk) {<br>
            data += chunk;<br>
        }).on('end',function(){<br>
                callback(data.match(/formId, '(\d+)'/)[1]);<br>
            });<br>
    });<br>
    req.write(payload,'utf8');<br>
    req.write(reqData,'binary');<br>
    req.write(enddata,'utf8');<br>
    req.end();<br>
<br>
    req.on('error', function(e) { <div class="clear">
                 
              
              
        
            </div>
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn