amazon-web-services - 需要在客户端浏览器中创建 Excel 文件并下载 - 是否可以创建文件流并在 Node Express 响应中发送?
问题描述
我想在 Node Express 中创建一个 Excel 文件流,并在 Node Express 响应中发送 Excel 文件,然后由客户端浏览器下载。问题是我对流完全没有经验,我什至不确定这是可能的。
一点背景知识:我正在使用节点包 ExcelJs ( https://www.npmjs.com/package/exceljs ) 创建 Excel 文档。我可以很好地创建 Excel 文件。我知道 Express 提供 res.download 选项来将文件下载到客户端浏览器,但我认为 res.download 需要一个带有路径的实际文件才能下载到客户端浏览器。此代码将托管在 AWS 上,我希望避免在抓取文件并将其下载到客户端浏览器之前必须在 S3 中创建和保存文件。
ExcelJS 可以选择创建一个;文件、流或缓冲区 Excel。是否可以创建具有所需数据的流,然后在响应中发送该文件流以在客户端浏览器中下载?
解决方案
//Create a middleware and a readable stream
const excelStream = //generate your excel stream here
//Filestream middleware
const streamW = () => {
return (req, res, next) => {
//Pipe the excel stream to the response
excelStream.pipe(res)
next()
}
}
router.get('/excelstream', streamW()/* consume the middleware*/, (req, res) => {
//Send the data to the front end
res
});
推荐阅读
- architecture - 多个订单管理系统与单个 OMS
- r - RStudio中的变量视图?
- php - 带有多个文件的单个数据显示在blade.php上
- python-3.x - python3:无法打开文件'drive/My Drive/damage/custom.py':[Errno 2]没有这样的文件或目录
- java - 使用 CompletableFuture Java 重试请求
- gnuplot - 如何在gnuplut中控制几行开始的n行的颜色
- java - lambda 表达式是否仅适用于函数式接口?
- python-3.x - 是什么导致 Python 中的“未绑定本地错误”?
- spring - 在 Spring 集成中使用 WebFlux 出站网关进行错误处理
- c++ - C++,如何在面向对象编程中制作动态大小的二维数组?