我有一个循环,但是我想生成多个文件。我收到Cannot set headers after they are sent to the client
。
如果我有一把钥匙,那很好。如果我有多个,它将生成第二个,而不生成第一个,并给出此错误。
_.forEach(keys, async function(key) {
try {
const pdf = await myPDFd(key);
res.setHeader('Content-disposition', 'attachment; filename=' + key + '.pdf');
res.setHeader('content-type', 'application/pdf');
res.send(pdf);
res.end();
} catch (error) {
}
});
答案 0 :(得分:1)
您不可能的方式。
每个HTTP请求仅响应1种类型的数据(在您的情况下为一个PDF文件)。无法通过1个HTTP请求发送2个文件。
您必须在客户端上创建一些逻辑(例如,两个下载链接)。客户端(用户或应用程序)必须执行两个单独的操作(运行两个单独的HTTP请求)才能下载2个文件。
或者,您可以将这两个文件压缩为ZIP(或另一种程序包类型),然后将此一个ZIP文件发送给用户。但是在这种情况下,用户(或应用程序)将不得不解压缩它作为附加步骤。您可以使用node-zip库。