Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1527 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Téléchargement de fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Téléchargement de fichier

n°1103636
Surfoo
Ça va ? ok.
Posté le 01-06-2005 à 08:28:42  profilanswer
 

Salut,
 
Je fais une exportation au format CSV d'une base de données MySQL, et une fois que j'ai concaténé toutes les données dans une variable, je voudrais faire un téléchargement forcé sans passer par la création d'un fichier sur le serveur.
 
Est ce que c'est possible ? Ou faut-il obligatoirement passer par un fichier sur le serveur ?

mood
Publicité
Posté le 01-06-2005 à 08:28:42  profilanswer
 

n°1103655
masklinn
í dag viðrar vel til loftárása
Posté le 01-06-2005 à 09:01:32  profilanswer
 

Ca ne pose normalement pas de problèmes.
 
1- Il faut envoyer le type MIME application/octet-stream pour forcer le téléchargement (dans le header Content-Type)
2- Utiliser le header Content-Disposition pour définir le nom du fichier
3- Penser à renseigner le header Content-Length avec la taille du fichier de sortie (donc la taille de la variable)
4- "Imprimer" le contenu de la variable directement dans le flux de sortie. Tout ce qui est mis dans le flux de sortie sera envoyé comme contenu.
 
Normalement, c'est suffisant


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1103673
Surfoo
Ça va ? ok.
Posté le 01-06-2005 à 09:20:31  profilanswer
 

Tu récupères comment la taille de la variable, je trouve pas :/
 
Par contre j'ai un autre problème :
Une fois sur 2, quand je clique sur le bouton d'exportation, ca me propose mon fichier data.php (qui gere l'exportation), et la fois d'apres mon fichier csv -_-
 

n°1103681
Surfoo
Ça va ? ok.
Posté le 01-06-2005 à 09:29:35  profilanswer
 

ah bah non, j'ai retrouvé c'etait strlen() !
 
Par contre j'ai toujours mon 2ème problème.

n°1103688
esox_ch
Posté le 01-06-2005 à 09:34:30  profilanswer
 

Doit surment y avoir un truc comme quoi ton data.php envoi un stream avant l'autre de temps en temps . mais sans le code on peu rien y faire


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1103697
Surfoo
Ça va ? ok.
Posté le 01-06-2005 à 09:39:58  profilanswer
 

J'utilise les templates (vTemplate) et je fais la sortie HTML uniquement à la fin du code php. Ca pourrait venir de ça ?

n°1103727
vlight
Posté le 01-06-2005 à 09:54:56  profilanswer
 

Tu peux nous copier coller le bout de code qu'on puisses voir + facilement parce que dans le flou dur dur :). Petite question par contre   :??: , pourquoi utiliser les templates sur cette page, si pas d'affichage ecran ca sert à rien ou c moi qui me plante  :sweat:  ?

n°1103751
Surfoo
Ça va ? ok.
Posté le 01-06-2005 à 10:04:38  profilanswer
 

l'exportation se fait en cliquant sur un bouton de formulaire instantanément (et recharge la même page) donc il me faut bien une interface web :)
 
voilà un bout du code
 
data.php

Code :
  1. [...]
  2. if(isset($_POST['export']) && isset($_POST['data'])) {
  3. extract($_POST);
  4. switch($data) {
  5.  case 'ville' :
  6.   $sql->sql("SELECT * FROM agi_ville" );
  7.   break;
  8.  case 'fonds' :
  9.   $sql->sql("SELECT * FROM agi_fcomm" );
  10.   break;
  11.  case 'annonce' :
  12.   $sql->sql("SELECT * FROM agi_annonce" );
  13.   break;
  14. }
  15. //Récupération des données
  16. $csv="";
  17. while($contenu=$sql->fetch_row()) {
  18.  foreach($contenu as $valeur) {
  19.   $csv.=$valeur.";";
  20.  }
  21.  $csv.="\r\n";
  22. }
  23. //Ecriture du fichier
  24. //$handle = fopen("./data/".$data.".csv", "w" );
  25. //fwrite($handle, $csv);
  26. //fclose($handle);
  27. //Téléchargement forcé
  28. header("Content-disposition: attachment; filename=".$data.".csv" );
  29. header("Content-Type: application/octet-stream" );
  30. header("Content-Transfer-Encoding: text/csv" );
  31. header("Content-Length: ".strlen($csv));
  32. header("Pragma: no-cache" );
  33. header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0" );
  34. header("Expires: 0" );
  35. echo $csv;
  36. //readfile("./data/".$data.".csv" );
  37. }
  38. $vtp->closeSession($handle,"data" );
  39. require_once("./include/footer.inc.php" );


 
footer.inc.php

Code :
  1. $handleFooter = $vtp->Open("./template/footer.vtp" );
  2. $vtp->addSession($handleFooter,"footer" );
  3. $vtp->closeSession($handleFooter,"footer" );
  4. $vtp->Display($handleHead);
  5. $vtp->Display($handle);
  6. $vtp->Display($handleFooter);


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Téléchargement de fichier

 

Sujets relatifs
Téléchargement de fichier sans confirmationtéléchargement de fichier distant [résolu]
Telechargement de fichierForcer le téléchargement d'un fichier txt ou html
Proposer un fichier créé dynamiquement en téléchargementProposer un téléchargement/ouverture de fichier depuis 1 web-app
[PHP] Creation d'un fichier et telechargement de celui-citéléchargement d'un fichier
[ PHP ] - intercepter la fin du telechargement d'un fichier[ PHP ] fOrcer le téléchargement d'un fichier .txt
Plus de sujets relatifs à : Téléchargement de fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR