我正在尝试生成报告并上传它。问题是,当生成文件的函数以readfile()结束时,即使我在函数调用之前放置ob_start()
,它也只是下载文件。所以我不明白为什么ob_start
没有抓住它。
问题应该在这里
我致电ob_start()
然后我调用输出这样的文件的函数
header('Content-Type: application/vnd.openxmlformats-officedocument.' .
'wordprocessingml.document');
header('Content-Disposition: attachment; filename="' . $fileNameDownload . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($fileName . '.' . $this->_extension));
readfile($fileName . '.' . $this->_extension);
之前的函数调用我放了
$content = ob_get_contents();
和4. ob_end_clen()
我希望用readfile()
函数将开始写入缓冲区,而是输出要下载的文件
答案 0 :(得分:0)
我相信标头正在被设置,而不是被输出缓冲区捕获的事实,你可能需要取消它们,特别是因为Content-Disposition: attachment
将响应设置为强制下载。
http://www.php.net/manual/en/function.ob-start.php
此功能将打开输出缓冲。当输出缓冲处于活动状态时,不会从脚本(除标题之外)发送输出,而是将输出存储在内部缓冲区中。
因此,如果函数设置:
header('Content-Type: application/vnd.openxmlformats-officedocument.' . 'wordprocessingml.document');
header('Content-Disposition: attachment; filename="' . $fileNameDownload . '"');
在您结束输出缓冲捕获后,您需要取消它,即:
header('Content-Type: text/html');
header('Content-Disposition: inline');