我折腾了一整天, 发现就是一个属性没写.
我没有用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};
}