获取二维码返回二进制,服务端后台如何保存?
我使用 nodejs 调用的https://developers.weixin.qq.com/miniprogram/dev/api/qrcode.html 获取二维码二进制数据,保存成图片后,图片打不开。
最后直接保存成 qr.png
尝试过将返回的数据流进行utf8,binary 等其他格式编码保存成图片,还是无法查看。官方能不能在这个接口返回的数据流作下详情说明或者给个demo啊。
4 回复
解决了,我就不一一回复了。我使用nodejs写的demo。
const axios = require( 'axios' ); const fs = require( 'fs' ); // 1.首先获取 access_token const APPID = 'your appid' ; const APPSECRET = 'your appsecret' ; getToken() .then(res => { console.log( '获取accessToken' , res); return getQRCode(res.access_token); }) .then(data => { if (data.errcode) { return new Error( '出错啦,错误信息:' + data.errmsg);
data.pipe(fs.createWriteStream(Date.now() + '.png' )); }); // 获取access_token function getToken() { return new Promise( function (resolve) { axios .get( 'https://api.weixin.qq.com/cgi-bin/token' , { params: { grant_type: 'client_credential' , appid: APPID, secret: APPSECRET } }) .then(response => response.data) .then( function (data) { resolve(data); }); }); } // 获取二维码 function getQRCode(access_token) { const GET_WXACODE_UNLIMIT = `https: //api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=`; let params = { scene: 'goodsId=1232412' , page: 'pages/product/index' , width: 430, auto_color: false , line_color: { r: '0' , g: '0' , b: '0' } }; console.log(JSON.stringify(params)); return new Promise( function (resolve, reject) { axios .post(GET_WXACODE_UNLIMIT + access_token, params, { responseType: 'stream' // 这行很重要 }) .then(response => response.data) .then( function (data) { resolve(data); }); }); } |