Télécharger des données à la volée

Télécharger des données à la volée - PHP - Programmation

Marsh Posté le 13-10-2005 à 16:27:12    

Bonjour
 
J'aimerai réaliser une interface permettant d'envoyer des données dans un fichier a un utilisateur.
Une solution serait que l'interface crée un fichier sur le serveur et ensuite porpose à un l'internaute de le telecharcher.
 
J'aimerai éviter d'avoir à créer ce fichier sur le serveur. Peut on directement proposer a l'internaute de telecharger le fichier sans le créer avant sur le serveur. En quelques que sorte envoyer un flux de données que le client récuppere comme fichier téléchargé.
 
merci

Reply

Marsh Posté le 13-10-2005 à 16:27:12   

Reply

Marsh Posté le 13-10-2005 à 16:35:02    

coolben a écrit :

Bonjour
 
J'aimerai réaliser une interface permettant d'envoyer des données dans un fichier a un utilisateur.
Une solution serait que l'interface crée un fichier sur le serveur et ensuite porpose à un l'internaute de le telecharcher.
 
J'aimerai éviter d'avoir à créer ce fichier sur le serveur. Peut on directement proposer a l'internaute de telecharger le fichier sans le créer avant sur le serveur. En quelques que sorte envoyer un flux de données que le client récuppere comme fichier téléchargé.
 
merci


Il suffit de générer les données directement dans ton script PHP et d'indiquer au serveur d'envoyer le tout avec le type MIME "application/octet-stream" ou "application/force-download", et en bonus tu peux utiliser le header Content-disposition pour indiquer le nom du fichier (celui qui va apparaître dans la boite d'enregistrement du client) avec une structure du type < Content-disposition: attachment; filename="nom_du_fichier" >
 
Accessoirement, ne pas oublier d'envoyer également la longueur des données au client (header Content-length) sinon c'est extrèmement chiant :o


Message édité par masklinn le 13-10-2005 à 16:35:59

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-10-2005 à 18:02:28    

merci ca marche nickel  
 
voici mon script si quelqu'un a besoin :
 

Citation :

<?  
if($_GET["dwn"]) {
   
   ob_clean(); // Vide le buffer (v >= 4.2)
 
   // Dialogue de téléchargement
   header("content-type: application/octet-stream" );
   // seulement pour application/octet-stream !
   header("Content-Disposition: attachment; filename=stat.txt" );
 
   // Ouvrir avec MSWord
   // header("content-type: application/msword" );
   // Ouvrir avec MSExcel
   // header("content-type: application/vnd.ms-excel" );
   // Ouvrir en Text
   // header("content-type: text/plain" );
 
   // voir aussi http://dev.nexen.net/scripts/details.php?scripts=354    
 
// ------------------------------------------------------------------    
// données à intégrer dans le fichier à envoyer    
include("../constante.php" );
include("../script.php" );    
$conn=conn();
$res=mysql_query('SELECT * FROM log ORDER BY h DESC',$conn);
echo mysql_error($conn);
if (mysql_num_rows($res)>0)
 {
 echo 'ip;date;page'.chr(13).chr(10);
 while ($objet=mysql_fetch_object($res))
  {
  echo $objet->ip.';'.$objet->h.';'.$objet->page.chr(13).chr(10);
  }
 }
// ---------------------------------------------------------------------
// fin des données
 
   flush(); // Envoie le buffer
} else { ?>
 
   <A href="download.php?dwn=download.php">Test</A>
   
<?  
}  
?>


 
 

Reply

Marsh Posté le 14-10-2005 à 10:19:06    

coolben a écrit :

merci ca marche nickel  
 
voici mon script si quelqu'un a besoin :
 

Citation :

<?  
if($_GET["dwn"]) {
   
   ob_clean(); // Vide le buffer (v >= 4.2)
 
   // Dialogue de téléchargement
   header("content-type: application/octet-stream" );
   // seulement pour application/octet-stream !
   header("Content-Disposition: attachment; filename=stat.txt" );
 
   // Ouvrir avec MSWord
   // header("content-type: application/msword" );
   // Ouvrir avec MSExcel
   // header("content-type: application/vnd.ms-excel" );
   // Ouvrir en Text
   // header("content-type: text/plain" );
 
   // voir aussi http://dev.nexen.net/scripts/details.php?scripts=354    
 
// ------------------------------------------------------------------    
// données à intégrer dans le fichier à envoyer    
include("../constante.php" );
include("../script.php" );    
$conn=conn();
$res=mysql_query('SELECT * FROM log ORDER BY h DESC',$conn);
echo mysql_error($conn);
if (mysql_num_rows($res)>0)
 {
 echo 'ip;date;page'.chr(13).chr(10);
 while ($objet=mysql_fetch_object($res))
  {
  echo $objet->ip.';'.$objet->h.';'.$objet->page.chr(13).chr(10);
  }
 }
// ---------------------------------------------------------------------
// fin des données
 
   flush(); // Envoie le buffer
} else { ?>
 
   <A href="download.php?dwn=download.php">Test</A>
   
<?  
}  
?>



 
Salut,
 
Attention qd même aux aspect de sécurité car un pirate pourrait utilisre ton script pour tlécharger tes fichiers PHP et donc avoir accés au source. Je n'ai pas lu ton source plus que ça mais tu devrait faire un test sur l'extension ou mieux sur le type mime pour t'assurer que ce qu'il télécharge est bien ce que tu as prévu. Sinon ça risque de chauffer ... :jap:  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed