【发布时间】:2018-08-28 13:53:10
【问题描述】:
我有这段代码:
app.post('/pst', function(req, res) {
var data = req.body.convo;
res.render('waiting.ejs'); //ADDED THIS
myFunc(data).then(result => {
res.render('success.ejs'); //THEN THIS
//---------------------------------
//clever way to send text file to client from the memory of the server
var fileContents = Buffer.from(result, 'ascii');
var readStream = new stream.PassThrough();
readStream.end(fileContents);
res.set('Content-disposition', 'attachment; filename=' + fileName);
res.set('Content-Type', 'text/plain');
readStream.pipe(res);
//--------------------------------------
}).catch( .....
我评论为“从服务器内存发送文件的聪明方法”的代码来自这篇文章: Node Express.js - Download file from memory - 'filename must be a string'
它的作用是从内存中取出一个字符串并将其作为 .txt 文件提供给客户端。
这段代码曾经可以工作。
然后我决定添加res.render('waiting.ejs'); 行,我得到了这个错误:
Error: Can't set headers after they are sent.
然后我尝试在将 .txt 文件发送到客户端的代码之前和之后添加另一个 res.render() [在本例中为 res.render('success.ejs');]。
错误仍然存在。此外,没有重定向到success.ejs,换句话说,res.render('success.ejs'); 从来没有工作过,尽管它是否放在那段代码之后的 ofr 之前。
【问题讨论】:
标签: javascript node.js header request-headers response-headers