在PHP中设置标题之前显示输出
我有一个HTML表单,它通过POST将数据提交到服务器页面:在PHP中设置标题之前显示输出,php,http-headers,Php,Http Headers,我有一个HTML表单,它通过POST将数据提交到服务器页面: <form id='report-inputs' method='post' action='generate.php'>...</form> 如果没有ob\u end\u clean()文件将作为损坏文件下载。我希望在页面完成处理时显示某种确认或其他内容,但需要注意的是,在使用ob\u end\u clean()进行渲染之前,任何页面输出都会被清除 如何才能显示某些内容并成功交付文件 谢谢。将数据保存到一个
<form id='report-inputs' method='post' action='generate.php'>...</form>
如果没有ob\u end\u clean()
文件将作为损坏文件下载。我希望在页面完成处理时显示某种确认或其他内容,但需要注意的是,在使用ob\u end\u clean()
进行渲染之前,任何页面输出都会被清除
如何才能显示某些内容并成功交付文件
谢谢。将数据保存到一个文件中,在屏幕上显示您想要的任何内容,并将Javascript重定向添加到您保存的文件。正如@mike-b所述,您不能做出相同的响应,同时做两件事。但以下是你能做的
你不能让回应同时做两件事。要么是text/html,要么是application/vnd.ms-excel。你得把它分成几个部分,明白吗。我打算显示的确认页面将与最初提交的数据相关。例如,如果我提交了“ProjectX,Product Y”,在处理输出后,我希望页面上显示“感谢您对ProjectX,Product Y感兴趣”。我知道我可以插入
window.location('somewhere.php')
,但我需要数据来跟随它。@MikeB实际上,我不能插入
块。标题可能已经被更改了…我已经考虑过了,但我反对,因为我不想让用户觉得他们的文件在使用链接时是可以下载的。相反,我将提交两次表格。第一次将与现在完全一样。当在浏览器中收到文件时,我将再次提交它,但会附加一段数据,表示不构建文件,而是返回一些HTML,其中包含用户所做选择的上下文。然后,我将使用javascript用第二次提交返回的html替换页面内容。
ob_end_clean();
header('Set-Cookie: fileDownloadToken='.$token);
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="'.$_DATA['title'].'.xlsx"');
$objWriter->save('php://output');