[RESOLU] Créer et télécharger un fichier XML issu d'un formulaire php.

Petit nouveau ! | 2 Messages

16 avr. 2015, 10:21

Bonjour,

J'ai crée un formulaire dont le but est de générer un fichier .xml qui contient les informations renseignées par l'utilisateur.
Le fichier .XML est bien généré sur mon ftp mais je souhaiterais qu'une fenêtre proposant le téléchargement de celui-ci, apparaisse automatiquement.

Pouvez-vous m'aider svp ?

Voici le code du formulaire, intégré dans une page wordpress:

Code : Tout sélectionner

<form action="genere_xml.php" method="POST"><input name="videosharing_XML" type="hidden" value="true" /> <table> <tbody> <tr> Nom de la video: <input name="video" size="20" type="text" /> </tr> <tr> Format de la video <input name="format" size="20" type="text" /> </tr> <tr> Monteur <input name="monteur" size="20" type="text" /> </tr> <tr> Production <input name="Production" size="20" type="text" /> </tr> <tr> Nom du fichier <input name="xmlfileName" size="20" type="text" /> </tr> </tbody> </table> <input name="B1" type="submit" value="Envoyer" /> </form>
Et le code du fichier .php qui est appelé:

Code : Tout sélectionner

<?php if(isset($_POST['videosharing_XML'])){ echo "Le fichier XML est sur le ftp"; $xmlfileName = $_POST['xmlfileName']; $video = $_POST['video']; $format = $_POST['format']; $monteur = $_POST['monteur']; $production = $_POST['production']; $xml_dec = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"; $rootELementStart = "<videosharing>"; $rootElementEnd = "</videosharing>"; $xml_doc= $xml_dec; $xml_doc .= $rootELementStart; $xml_doc .= "<fichier>"; $xml_doc .= $xmlfileName; $xml_doc .= "</fichier>"; $xml_doc .= "<video>"; $xml_doc .= $video; $xml_doc .= "</video>"; $xml_doc .= "<format>"; $xml_doc .= $format; $xml_doc .= "</format>"; $xml_doc .= "<monteur>"; $xml_doc .= $monteur; $xml_doc .= "</monteur>"; $xml_doc .= "<production>"; $xml_doc .= $production; $xml_doc .= "</production>"; $xml_doc .= $rootElementEnd; $default_dir = ""; $default_dir .= $xmlfileName .".xml"; $fp = fopen($default_dir,'w'); $write = fwrite($fp,$xml_doc); } ?>

Mammouth du PHP | 671 Messages

16 avr. 2015, 10:37

un exemple de code pour forcer le telechargement :
$file_url = 'http://www.myremoteserver.com/file.exe';
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\"");
readfile($file_url); // do the double-download-dance (dirty but worky)

à adapter à son script qui ne doit rien renvoyer au client avant.

Petit nouveau ! | 2 Messages

16 avr. 2015, 11:32

Merci beaucoup tof, c'est fonctionnel !

J'ai utilisé le code suivant pour télécharger les xml, vu qu'ils auront un nom different

Code : Tout sélectionner

$file_url = 'monadresse'; header('Content-Type: application/octet-stream'); header("Content-Transfer-Encoding: Binary"); header("Content-disposition: attachment; filename=\"" . basename ($xmlfileName .".xml") . "\""); readfile($xmlfileName .".xml");