取消保存文件提示时如何避免"Can't set headers after they are sent"
How to avoid "Can't set headers after they are sent" when cancelling a save file prompt
我有一个具有文件 uploading/downloading 功能的页面。
当我尝试下载文件 AND 取消保存文件提示时,发生在 res.writeHead
部分之后,它离开 headers 并等待 res.write
和 res.end
部分。
问题是,如果取消提示,这些将被转义,导致所有其他响应都失败并显示错误 "Can't set headers after they are sent"。
是否有任何方法或任何其他方法来结束捕获已取消提示事件的响应?
为文件下载设置 headers 和流式传输数据的部分(位于 /download/:filename
[=37= 中调用的函数中]路线) 是:
res.writeHead(200, {'Content-Type': 'application/octet-stream'});
var readstream = gfs.createReadStream({
filename: files[0].filename
});
readstream.on('data', function(data){
res.write(data);
});
readstream.on('end', function(){
res.end();
});
如果此序列未完成,则其他所有响应均失败。
示例:
res.status(403).send('You have no access to this file');
在另一个控制器中,在同一页面中调用。
(我想如果我重定向到另一个页面 headers 实际上会被清除吗?)
*如果我select下载位置然后按确定,不会出现错误
*我没有在循环中有双重响应,以避免这个常见的错误答案:)
在 express 中你可以检查 res.headersSent
,这样你就可以避免异常
if(res.headersSent){
return;
} else {
//set you headers
}
我有一个具有文件 uploading/downloading 功能的页面。
当我尝试下载文件 AND 取消保存文件提示时,发生在 res.writeHead
部分之后,它离开 headers 并等待 res.write
和 res.end
部分。
问题是,如果取消提示,这些将被转义,导致所有其他响应都失败并显示错误 "Can't set headers after they are sent"。
是否有任何方法或任何其他方法来结束捕获已取消提示事件的响应?
为文件下载设置 headers 和流式传输数据的部分(位于 /download/:filename
[=37= 中调用的函数中]路线) 是:
res.writeHead(200, {'Content-Type': 'application/octet-stream'});
var readstream = gfs.createReadStream({
filename: files[0].filename
});
readstream.on('data', function(data){
res.write(data);
});
readstream.on('end', function(){
res.end();
});
如果此序列未完成,则其他所有响应均失败。
示例:
res.status(403).send('You have no access to this file');
在另一个控制器中,在同一页面中调用。 (我想如果我重定向到另一个页面 headers 实际上会被清除吗?)
*如果我select下载位置然后按确定,不会出现错误
*我没有在循环中有双重响应,以避免这个常见的错误答案:)
在 express 中你可以检查 res.headersSent
,这样你就可以避免异常
if(res.headersSent){
return;
} else {
//set you headers
}