koa异步写文件遇到的小问题
最近用koa写个微信小程序二维码生成接口,出现了一个小坑:由于小程序二维码生成接口返回的是二进制流,需要通过fs操作生成图片返回给前端下载。期间反复出现下载文件大小为0(零 / 大小未知)的情况。
主要生成二维码代码如下
// 其余代码省略 const writeS = fs.createWriteStream('qrcode.png') await request({ uri: `https://api.weixin.qq.com/wxa/getwxacode?access_token=${token}`, method: 'post', body: data, json: true }).pipe(writeS) // 其余代码省略
需要有个先后顺序问题,必须先等到文件写完后才能进行图片下载接口调用。处理方法是在前端调用生成二维码的接口,而接口的操作需要有个等待过程,即要在createWriteStream
结束后生成二维码接口才返回数据。
前端在接收到生成二维码接口返回数据后才调用下载二维码接口。
koa端等待写文件结束后返回,这里koa要用promise在callback后触发返回数据:
ctx.body = await new Promise((resolve, reject) => { writeS.on('finish', function () { resolve({ code: 1 }) }) })
前端监听操作:
if (res.data.code === 1) { window.open('图片下载地址') }
具体接口代码(查看)
相关推荐
往后余生 2020-09-17
yanyongtao 2020-11-02
lzccheng 2020-09-06
webgm 2020-08-16
lert0 2020-08-16
80447704 2020-06-09
LorenLiu 2020-06-07
无缘公子 2020-02-02
LorenLiu 2020-01-31
LorenLiu 2020-01-30
80447704 2020-01-30
苏莉koa 2020-01-29
Qimingweikun 2020-01-28
80447704 2020-01-02
byourb 2020-01-04
80447704 2019-12-24