Bonjour,
j'ai un problème pour faire un bouton qui sauvegarde mon fichier.
Sous firebug, je vois dans la console le résultat de ma commande, je vois tout le contenu de mon fichier (sous firebug), mais je n'ai pas la fenetre qui me propose de sauvegarder le fichier.
Mon code :
Dans ma page mon body
J'appelle ma fonction javascript :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <input type="submit" name="ok" id="ok" value="Sauvegarder en .CSV" onclick="saveCSVFiles();" />
ma page fonctions.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 function creerRequete() { var requete = null; try { /* On tente de créer un objet XmlHTTPRequest */ requete = new XMLHttpRequest(); } catch (microsoft) { /* Microsoft utilisant une autre technique, on essays de créer un objet ActiveX */ try { requete = new ActiveXObject('Msxml2.XMLHTTP'); } catch(autremicrosoft) { /* La première méthode a échoué, on en teste une seconde */ try { requete = new ActiveXObject('Microsoft.XMLHTTP'); } catch(echec) { /* À ce stade, aucune méthode ne fonctionne... mettez donc votre navigateur à jour ;) */ requete = null; } } } if(requete == null) { alert('Impossible de créer l\'objet requête,\nVotre navigateur ne semble pas supporter les object XMLHttpRequest.'); } return requete; } function saveCSVFiles() { selectValueNumSession = document.getElementById('numSession').value; /* On crée l'objet XHR */ var requete = creerRequete(); if (requete == null) { return; } /* Définition du fichier de traitement */ var url = 'fonctions.php?f=6&selectValueNumSession='+selectValueNumSession; /* Envoi de la requête à la page de traitement */ requete.open('GET', url, true); /* On surveille le changement d'état de la requête qui va passer successivement de 1 à 4 */ requete.onreadystatechange = function() { /* Lorsque l'état est à 4 */ if(requete.readyState == 4) { /* Si on a un statut à 200 */ if(requete.status == 200) { //Je ne sais pas quoi mettre ici } } }; requete.send(null); }
Mon code d'enregistrement du fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 case 6 : $numSession = $_GET['selectValueNumSession']; $numSession = sprintf("%'03.u", $numSession); savefileas($numSession); break;
Quelqu'un aurait une idée? Quand je clique sur mon bouton, je voudrais pouvoir enregistrer mon fichier en local.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 function savefileas($numSession) { $numSession = sprintf("%'03.u", $numSession); $fichier = './tmp/'.$numSession.'/fichier.csv'; $nom_fichier = 'Log_JDB.csv'; header('Pragma: public'); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1 header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1 header('Content-Transfer-Encoding: none'); header('Content-Type: application/octetstream; name='.$nom_fichier); //This should work for IE & Opera header('Content-Type: application/octet-stream; name='.$nom_fichier); //This should work for the rest header('Content-Disposition: inline; filename='.$nom_fichier); header('Content-Type: application/csv'); header('Content-Type: application/download'); header('Content-Description: File Transfer'); header('Content-Disposition: attachment; filename='.$nom_fichier); header('Content-Length:'.filesize($fichier)); //Read the file and output to browser @readfile($fichier); die(); }
Merci pour vos réponses.
Partager