On the download page put those headers
// Try and find appropriate type
switch(strtolower($extension)) {
case 'txt': $type = 'text/plain'; break;
case "pdf": $type = 'application/pdf'; break;
case "doc": $type = 'application/msword'; break;
case "xls": $type = 'application/vnd.ms-excel'; break;
case "ppt": $type = 'application/vnd.ms-powerpoint'; break;
case "gif": $type = 'image/gif'; break;
case "png": $type = 'image/png'; break;
case "jpg": $type = 'image/jpg'; break;
case "jpeg": $type = 'image/jpg'; break;
case "html": $type = 'text/html'; break;
default: $type = 'application/force-download';
}
// General download headers:
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Transfer-Encoding: binary");
// Filetype header
header("Content-Type: " . $type);
// Filesize header
header("Content-Length: " . filesize($filepath));
// Filename header
header("Content-Disposition: attachment; filename=\"" . $file . "\";" );
// Send file data
readfile($filepath);