C'est dans les header.
Il faut que je recherche mais il y a un header pour forcer le navigateur a enregistrer le fichier et pas à l'afficher.
EDIT:
Un peu de google et tu trouves qu'il faut :
Content-Type: application/force-download
Content-Disposition: attachment; filename=texte.txt