Vous pouvez laisser entendre au navigateur que votre réponse est un fichier qui doit être sauvegardé en utilisant un en-tête Content-Disposition:
header('Content-Disposition: attachment; filename="filename.txt"');
header('Content-Type: text/plain');
echo "Desired file contents";
Notez que cela ne signifie que vous générez le fichier sur le serveur, que votre question suggère n'est pas ce que vous voulez. Vous pouvez créer le contenu du fichier en Javascript côté client, puis créer un lien en utilisant le data uri scheme pour autoriser le téléchargement. Cependant, ce n'est pas supporté par tous les navigateurs, vous ne pouvez pas forcer un "enregistrer sous", et il y a des limites de taille sur ce que vous pouvez générer.
ok il a répondu, mais merci encore – user166891