0

我有强制下载 PDF 的 PHP 代码。它适用于 Mac,但不适用于 Windows 机器。我想这可能与linux服务器读取代码并创建mac可以读取但windows不能读取的文件有关?

$filename = str_replace(' ', '%20', $_GET['brochure']);
header('Cache-Control: public');
header('Content-type: application/pdf');
header("Content-disposition: attachment; filename=\"$filename\"");
readfile('http://siteurl.com/media/download/'.$filename);
die();

关于如何让这个 PDF 下载 Windows 友好的任何建议?

错误信息是

无法打开“文件名..”,因为它不是受支持的文件类型或文件已损坏(例如,它作为电子邮件附件发送并且未正确解码)。

4

2 回答 2

1

也许您的浏览器正在缓存文件的旧版本。尝试将这些标头添加到您的代码中:

header("Cache-Control:  maxage=1");
header("Pragma: public");

另外的选择:

将文件保存在临时目录中,并使用以下代码将其发送到客户端:

$file = readfile('/tmp/'.$filename);
header('Content-Description: File Transfer');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
于 2012-05-21T09:47:18.217 回答
0

可能是文件名最后需要 .pdf 以便 Windows 可以正确解释它。尝试下载文件并在末尾使用 .pdf 重命名,然后尝试打开它。

于 2012-05-21T09:57:53.250 回答