在Nodejs的KOA服务器内用got与form-data发起小程序图片内容安全(security.imgSecCheck)

350 阅读1分钟

我折腾了一整天, 发现就是一个属性没写.

我没有用koa-body处理上传上来的文件, 而是用koa-multer处理, 反正也没有其他字段. 我用的是MemmoryStorage 来接的文件. ctx.request.file里有四个属性是要用的: buffer, mimetype, size, originalname, 这4个属性组成了form-data的核心. 

const form = new FormData();
form.append('media', buffer, { //我卡了半天没写这个额外的options对象上
  contentType: mimetype, 
  knownLength: size,
  filename: originalname //我在这卡了又一个半天就因为这个属性写错了
});

最后用got.post发起请求

const {body: {errcode, errmsg}} = await got.post(`https://api.weixin.qq.com/wxa/img_sec_check?access_token=${accessToken}`, {
  body: form,
  responseType: 'json',
});
if(errcode == 0){
  response.status = 200;
}else{
  response.status = 422;
  response.body={errcode, errmsg};
}