Прежде всего, вы должны исправить заголовок filename= $file
.Оберните переменную $file
как минимум '
символами.Кроме того, вам не нужен закрывающий тег в конце файла PHP.
И я не уверен насчет ваших заголовков, поэтому я предлагаю вам попробовать приведенную ниже функцию, она довольно распространена для любого типаданные и уже содержат некоторые исправления и обходные пути:
function download_file($file_path, $file_name = null, $file_type = 'application/octet-stream')
{
if ($file_name === null)
{
$file_name = basename($file_path);
}
if (file_exists($file_path))
{
@set_time_limit(0);
header('Content-Description: File Transfer');
header('Content-Type: ' . $file_type);
header('Content-Disposition: attachment; filename="' . str_replace('"', "'", $file_name) . '"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file_path));
readfile($file_path);
}
exit;
}