让Node.js将缓冲区作为文件发送

4

我正在尝试在服务器端创建一个Excel工作簿,当用户访问特定路由(使用express.js)时将其发送给用户。我正在使用https://github.com/riyadhalnur/excelbuilderjs-node模块,并且我有大量数据存储在workBookB64常量中,在我的浏览器(Chrome)中,我在res.end()调用之后得到了处理和内容类型的头信息。但是文件从未在浏览器端下载。我的Node进程运行在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 );
1个回答

0

我自己解决了这个问题。原来问题出在我请求URL的方式上。客户端代码使用了jQuery调用:$.get("/getReport"),因此响应返回到这个调用中,但没有回调处理程序。所以对我来说,它似乎没有起作用。 我使用的解决方案是消除JS,只使用锚标签,并直接调用URL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接