web-dev-qa-db-fra.com

Créer un fichier texte à télécharger à la volée

Mise à jour n ° 1

Ce qui a été posté ci-dessous est parfait pour le faire sortir du fichier. Ce qu'il fait cependant, c'est générer les données de chaîne suivies par le reste des formulaires HTML. Est-il possible d'arrêter ce qui est mis dans le fichier et ce qui vient juste d'être affiché par le navigateur?.

Mise à jour # 2

Je viens d'ajouter exit() et tout fonctionne bien. Merci!

EOU

Salut,

J'ai regardé autour de moi et vu certaines choses similaires, mais je ne comprenais pas tout à fait ce que je devais faire pour mener à bien cette tâche.

À l'heure actuelle, j'ai un formulaire qu'un utilisateur fournit quelques détails. Lors de la soumission, il est posté sur lui-même et les variables POST sont traitées. J'ai un modèle Web HTML prédéfini pour les informations à placer, qui fonctionne très bien et qui se contente de faire un str_replace.

Ce que j'essaie de faire maintenant, c'est de l'exporter sous forme de téléchargement vers l'utilisateur dans un document en texte brut. Ainsi, le résultat final étant que l'utilisateur clique sur Soumettre sur le formulaire, il ouvre alors une fenêtre de téléchargement avec la page Web modifiée sous la forme d'un fichier .txt.

Autant que je sache, je dois faire quelque chose en utilisant la fonctionnalité des en-têtes HTTP. Quoi exactement si pour atteindre ce que je veux, je ne suis pas sûr. Je veux seulement que le fichier soit disponible une fois, mais je suppose qu'il doit être stocké quelque part initialement pour que l'utilisateur puisse le télécharger, ce qui nécessitera ensuite un nettoyage après le nettoyage manuel?

Toute aide ou points serait génial! Merci.

41
lethalMango

Découvrez la solution acceptée par cette SO question . Substituez votre propre nom de fichier à basename($File) et changez la taille du fichier ($ File) en strlen($your_string). (Vous pouvez utiliser mb_strlen uniquement si la chaîne contient des caractères multi-octets.)

19
simshaun

Pas besoin de le stocker n'importe où. Il suffit de sortir le contenu avec le type de contenu approprié.

<?php
    header('Content-type: text/plain');
?>Hello, world.

Ajoutez du contenu-disposition si vous souhaitez déclencher une invite de téléchargement.

header('Content-Disposition: attachment; filename="default-filename.txt"');
64
Quentin

Utilisez le code ci-dessous pour générer des fichiers à la volée. 

<? //Generate text file on the fly

   header("Content-type: text/plain");
   header("Content-Disposition: attachment; filename=savethis.txt");

   // do your Db stuff here to get the content into $content
   print "This is some text...\n";
   print $content;
 ?>
26
Dhiral Pandya
<?php

    header('Content-type: text/plain');
    header('Content-Disposition: attachment;
            filename="<name for the created file>"');
    /*
    assign file content to a PHP Variable $content
    */
    echo $content;
?>
0
Chui Hui Chiu