PHPPresentation - Как настроить имя файла обслуживаемого (загружаемого в браузере) файла, чтобы оно не совпадало с именем вызывающего сценария php?

Как мне изменить следующий скрипт (Summary.php), чтобы имя обслуживаемого файла PPTX не было "Summary.php", а мой обслуживаемый файл не назывался Summary.php.pptx?

Техника, которую я использую, заключается в том, чтобы рендерить содержимое файла PowerPoint в браузер, но я намеренно хочу изменить имя файла, чтобы оно по крайней мере не содержало.php, но в лучшем случае было пользовательским именем, например Presentation.pptx, как указано в моем заголовке php. ниже.

Summary.php

require_once 'vendor/phpoffice/phppresentation/vendor/autoload.php';
use PhpOffice\PhpPresentation\PhpPresentation;
use PhpOffice\PhpPresentation\IOFactory;
use PhpOffice\PhpPresentation\Style\Alignment;
use PhpOffice\PhpPresentation\Style\Color;
use PhpOffice\PhpPresentation\Style\Fill;
use PhpOffice\PhpPresentation\Style\Border;


class Presentation
{
    function generatePresentation()
    {
        header("Content-Type: application/vnd.openxmlformats-officedocument.presentationml.presentation; filename=Presentation.pptx");
        $oWriterPPTX = IOFactory::createWriter($this->objPhpPresentation,'PowerPoint2007' );
        $oWriterPPTX->save('php://output');
    }
}

РЕДАКТИРОВАТЬ

Решение

    header("Content-Type: application/vnd.openxmlformats-officedocument.presentationml.presentation");
    header("Content-Disposition: attachment; filename=Presentation.pptx");
    $oWriterPPTX = IOFactory::createWriter($this->objPhpPresentation,'PowerPoint2007' );
    $oWriterPPTX->save('php://output');

1 ответ

Решение

Вы должны использовать Content-Disposition заголовок ответа. Например

Content-Disposition: attachment; filename="filename.jpg"

Ссылка: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition

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