PHP Имя файла Content-Disposition работает только частично - PullRequest
0 голосов
/ 01 апреля 2020

Я написал скрипт, который отображает некоторые PDF-файлы с моего сервера в браузере. Это работает очень хорошо, и если пользователь нажимает кнопку «Сохранить», в диалоговом окне отображается правильное имя файла. Но Chrome не показывает правильное имя файла.

Пожалуйста, посмотрите картинку, и вы поймете, что я имею в виду: URL: ... / api / downloads / getFile / MDBhYmYzZDI2MUFFUCBIb .... Снимок экрана Chrome неверное имя файла

Мой PHP Код:

<?php
$fileNameOnServer = "MDBhYmYzZDI2MUFFUCBIb.pdf";
$file = "/media/downloads/pdf/".$fileNameOnServer;
$originalFileName = getFileNameFromSQL($fileNameOnServer);
header("Content-type: application/pdf");
header("Content-length: ".filesize($file)."");
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: inline; filename="'.rawurldecode($originalFileName).'"');
readfile($file);
exit;
?>

Информация о имени файла: Есть много файлов PDF, и чтобы избежать дубликатов, я хэшировал все имена файлов и сохранил исходное имя в базе данных.

Редактировать:

Я обновил свой код с помощью функции "$ originalFileName = getFileNameFrom SQL ($ fileNameOnServer);"

На этом снимке экрана показано диалоговое окно «Сохранить как» с правильным именем файла: введите описание изображения здесь

...