获取node.js将缓冲区作为文件发送

getting node.js to send buffer as a file

本文关键字:文件 缓冲区 node js 获取      更新时间:2023-09-26

我试图在服务器端创建一个excel工作簿,当他们访问某个路由时发送给用户(使用express.js)我使用的模块从https://github.com/riyadhalnur/excelbuilderjs-node并且我确实在workBookB64常量中有大量数据,并且在我的浏览器(chrome)中,我确实在res.end()调用后获得处置和内容类型的标题。但是文件永远不会在浏览器端下载。我有我的节点进程后面运行的Nginx反向代理,处理SSL。任何关于如何获得文件下载的想法将是伟大的!

    const result      = Excel.createFile( workBook );
    const workBookB64 = new Buffer( result, 'base64' );
    res.setHeader( 'Content-Disposition', 'attachment; filename=' + fileName );
    res.setHeader( 'Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64' );
    res.end( workBookB64 );

我自己解决了。事实证明,问题在于我如何请求URL。客户端代码使用jQuery调用:$.get("/getReport")所以响应返回到这个调用,它没有回调处理程序。所以在我看来,这似乎行不通。我使用的解决方案是消除JS,只使用锚标记,并直接调用URL。