EGG 如何处理POST请求小程序返回的BUFFER数据

微信小程序生成二维码的方法是

获取小程序二维码
接口C:适用于需要的码数量较少的业务场景

接口地址:

https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN

获取 access_token 详见文档

POST 参数说明

参数 类型 默认值 说明
path String 不能为空,最大长度 128 字节
width Int 430 二维码的宽度

注意:通过该接口生成的小程序二维码,永久有效,数量限制见文末说明,请谨慎使用。用户扫描该码进入小程序后,将直接进入 path 对应的页面。

按照阿里的文档解释,阿里oss的sdk支持buffer数据

用户也可以通过put接口简单地将Buffer中的内容上传到OSS:

var co = require('co');
var OSS = require('ali-oss');
var client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
  bucket: 'Your bucket name'
});
co(function* () {
  var result = yield client.put('object-key', new Buffer('hello world'));
  console.log(result);
}).catch(function (err) {
  console.log(err);
});

目前我是这么写的

const resData = {
        path: app.config.QrCodeRes.path + uid,
        width: app.config.QrCodeRes.width,
      };
      
const img = yield app.curl(app.config.QrCodeRes.url + token, {
        method: 'POST',
        data: { resData },
      });

const pathDateMake = moment().toObject();
const path = '/Qrcode/' + pathDateMake.years + '/' + uid + '.png';
const result = yield this.ctx.oss.put(path, new Buffer(img.data));

不知道为何,上传到OSS的图片下载下来都是黑屏一片

很明显,对BUFFER的处理不对

求解如何正确的处理

阅读 6.7k
1 个回答

已经解决了,粗心提交的数据不对

data: { resData },

因为上面已经定义了resData的数据。。。所以返回来的buffer在转换后其实提示的是错误。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题