Я использую PHPExcel для вывода файла Excel пользователям. Я вставил следующий код.
public function outPut($name=null)
{
if (is_null($name)) $name = $this->setName();
ob_end_clean();
header("Content-Type:application/force-download");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header('Content-Type:application/vnd.ms-excel');
header('Content-Disposition:attachment;filename = "'.$name.'.xlsx"');
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
$objWriter = \PHPExcel_IOFactory::createWriter($this->phpExcel, 'Excel2007');
$objWriter->save('php://output');
}
Проблема в том, что файл, загруженный с идентификатора браузера, сломан, и я не могу его открыть. Но если в конце добавлю выход , все хорошо
public function outPut($name=null)
{
if (is_null($name)) $name = $this->setName();
ob_end_clean();
header("Content-Type:application/force-download");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header('Content-Type:application/vnd.ms-excel');
header('Content-Disposition:attachment;filename = "'.$name.'.xlsx"');
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
$objWriter = \PHPExcel_IOFactory::createWriter($this->phpExcel, 'Excel2007');
$objWriter->save('php://output');
exit; // works well
}
Я предполагаю, что это связано с буферизацией вывода, так что кто-нибудь может дать мне направление, чтобы найти причину.
Размер загруженного файла меньше после добавления в код «выхода». Но я ничего не вывожу вручную в своем коде.
точно у вас больше вывода, он попадает в файл, что делает его недействительным
У меня есть направление. Но после этого я ничего не выводил. Так возможно ли, что фреймворк автоматически выводит некоторую дату в браузер?
Вероятно, это зависит от используемой вами структуры. Большинство фреймворков MVC в настоящее время имеют какой-то объект Response, который возвращает контроллер.
да, это возможно, мы не знаем, какой фреймворк вы используете, вы можете увидеть результат в файле, просто откройте его в текстовом редакторе.






у вас, вероятно, есть дополнительный вывод из вашего скрипта, который вы должны