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