Вывод PHPExcel

Я использую 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
    } 

Я предполагаю, что это связано с буферизацией вывода, так что кто-нибудь может дать мне направление, чтобы найти причину.

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

user9487972 09.04.2018 04:27

Размер загруженного файла меньше после добавления в код «выхода». Но я ничего не вывожу вручную в своем коде.

sysummery 09.04.2018 04:46

точно у вас больше вывода, он попадает в файл, что делает его недействительным

user9487972 09.04.2018 04:47

У меня есть направление. Но после этого я ничего не выводил. Так возможно ли, что фреймворк автоматически выводит некоторую дату в браузер?

sysummery 09.04.2018 04:52

Вероятно, это зависит от используемой вами структуры. Большинство фреймворков MVC в настоящее время имеют какой-то объект Response, который возвращает контроллер.

ccKep 09.04.2018 05:15

да, это возможно, мы не знаем, какой фреймворк вы используете, вы можете увидеть результат в файле, просто откройте его в текстовом редакторе.

user9487972 09.04.2018 07:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
41
0

Другие вопросы по теме