如何从 NestJS 控制器 return 一个 excel 文件
How to return an excel file from NestJS Controller
所以我正在从我的猫鼬数据库中读取大量数据并将它们写入 SheetJS 的 XLSX 中。我想 return 从我的控制器下载一个文件。我在下面得到了一个对象,问题是我如何 return 下载这个对象?
const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'buffer' });
我用下面的代码完成了。 Header 提示文件下载,类型设置正确的文件类型,您可以使用 res.send()
发送
res.header('Content-disposition', 'attachment; filename=anlikodullendirme.xlsx');
res.type('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
return res.send(buffer);
你可以尝试这样实现它:
import {Readable} from "stream";
import {readFileSync} from 'fs';
import {Response} from 'express';
@Get('')
async createFile(@Res() res: Response)
{
var buffer = readFileSync('/path_to_file');
const stream = new Readable();
stream.push(buffer);
stream.push(null);
res.set({
'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'Content-Length': buffer.length,
});
stream.pipe(res);
}
所以我正在从我的猫鼬数据库中读取大量数据并将它们写入 SheetJS 的 XLSX 中。我想 return 从我的控制器下载一个文件。我在下面得到了一个对象,问题是我如何 return 下载这个对象?
const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'buffer' });
我用下面的代码完成了。 Header 提示文件下载,类型设置正确的文件类型,您可以使用 res.send()
发送res.header('Content-disposition', 'attachment; filename=anlikodullendirme.xlsx');
res.type('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
return res.send(buffer);
你可以尝试这样实现它:
import {Readable} from "stream";
import {readFileSync} from 'fs';
import {Response} from 'express';
@Get('')
async createFile(@Res() res: Response)
{
var buffer = readFileSync('/path_to_file');
const stream = new Readable();
stream.push(buffer);
stream.push(null);
res.set({
'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'Content-Length': buffer.length,
});
stream.pipe(res);
}