查看ctx.url的源码发现,该方式底层是使用到例如urllib的request方法,该方法只是默认把数据转为Buffer就直接返回了,下载文件的话只需要将Buffer转为Stream即可;
返回的数据类型可以通过设置dataType为json或text;
如果将请求的writeStream配置为一个可写流,那么请求成功之后会自动将文件写入该流中完成下载。
下载方法一
const result = await this.ctx.curl(url, { method, data);
await bufferToStream(bufferData, saveFilePath);
下载方法二
const result = await this.ctx.curl(url, { method, data, writeStream: require('fs').createWriteStream(saveFilePath) });
下载方法三
const result = await ctx.curl(url, {
streaming: true,
});
result.res.pipe(require('fs').createWriteStream(saveFilePath));