1

我有一个 HTML 表单,它通过 POST 将其数据提交到服务器页面:

<form id='report-inputs' method='post' action='generate.php'>...</form>

generate.phpis 对其给出的数据进行了大量工作,最终转储出 Excel 文件以供下载。它通过清理缓冲区和设置标题来做到这一点:

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');

没有ob_end_clean()文件下载为损坏。我想在页面完成处理时显示某种确认或其他内容,但需要注意的是,在使用ob_end_clean().

我该怎么做才能显示一些内容并成功交付文件?

谢谢。

4

2 回答 2

1

正如@mike-b 已经说过的那样,您不能同时做出相同的响应来做两件事。但这是你可以做的。

  1. 您的 PHP 脚本应该创建下载文件并将其保存为服务器上的临时文件。
  2. 向用户返回一个页面,说“感谢您对 Project X 的兴趣......”或其他任何内容。
  3. 输出页面应在适当的时间间隔后将用户重定向到下载文件的 URL。或者您可以提供一个实际链接供他们点击。或两者。
于 2012-11-07T19:04:10.610 回答
1

将数据保存到文件中,在屏幕上显示您想要的任何内容,然后将 Javascript 重定向添加到您保存的文件中。

于 2012-11-07T19:02:07.717 回答