我编写了一个脚本,在浏览器中显示来自我的服务器的一些 pdf 文件。这工作半正常,如果用户单击保存,正确的文件名将显示在对话窗口中。但是 Chrome 没有显示正确的文件名。
请看图片,然后你就知道我的意思了: URL: .../api/downloads/getFile/MDBhYmYzZDI2MUFFUCBIb.... Screenhot 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 = getFileNameFromSQL($fileNameOnServer);”更新了我的代码
此屏幕截图显示具有正确文件名的“另存为”对话框窗口: 在此处输入图像描述