我有PHP代码强制下载PDF。它适用于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友好的任何建议?
错误消息是
无法打开'filename ..'因为它不是受支持的文件 键入或因为文件已损坏(例如,它被发送为 电子邮件附件并没有正确解码)。
答案 0 :(得分: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;
答案 1 :(得分:0)
可能是文件名需要.pdf,以便Windows可以正确解释它。尝试下载最后用.pdf重命名的文件,然后尝试打开它。