pero ...
$tipo .. de donde sale su valor?
Lo guardas en tu BD como el MIME (formato) de ese archivo? .. si es así .. no veo donde lo sacas de tu BD ($row['tipo'] ?¿)
De todas formas, te hacen falta más cabeceras HTTP para "forzar" a tu navegador a que entienda que el dato que se le envia es para que lo intente visualizar siempre ..
Si mal no recuerdo una de tantas sería:
Código PHP:
header('Content-Disposition: inline; filename="' . $nombre_archivo . '"');
Revisa los ejemplos y comentarios de los usuarios de:
www.php.net/header
Un saludo,