Der Dateiname lässt sich mit einem relativ einfachem Header ändern, der aber AFAIK für IE anders ist als normal:
PHP-Code:
if (preg_match('/MSIE [0-9]\.[0-9]{1,2}/'$_SERVER['HTTP_USER_AGENT']))
{
    
header('Content-Disposition: inline; filename="'.$_GET['file'].'"');
} else {
    
header('Content-Disposition: attachment; filename="'.$_GET['file'].'"');

Und auf einem Apache lässt sich der MIME-Type AFAIK auch anpassen:
PHP-Code:
header('Content-type: '.mime_content_type($_GET['file']));