Force PDF скачать с PHP – файл поврежден в Windows

У меня есть PHP-код, который заставляет загрузить PDF-файл. Он работает на Mac, но не с Windows-машины. Я предполагаю, что это может быть связано с тем, что сервер linux считывает код и создает файл, который Mac может читать, но не окна?

$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 ..», потому что это либо не поддерживаемый тип файла, либо потому, что файл поврежден (например, он был отправлен как вложение электронной почты и неправильно декодирован).

Возможно, ваш браузер кэширует более старую версию файла. Попробуйте добавить эти заголовки в свой код:

 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; 

Возможно, что имя файла нуждается в .pdf в конце, чтобы Windows могла его правильно интерпретировать. Попробуйте загрузить файл, переименовав его на .pdf в конце, а затем попытаться открыть его.