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

  FORUM HardWare.fr
  Programmation
  PHP

  Problème de transfert de fichier avec le protocole FTP

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de transfert de fichier avec le protocole FTP

n°741069
NerOcrO
PrOut
Posté le 27-05-2004 à 09:57:53  profilanswer
 

Voici index.php :

Code :
  1. <?$rep="rep_que_vous_voulez"?>
  2. <html>
  3. <head>
  4. <title></title>
  5. </head>
  6. <body onLoad="document.connexion.ip.focus()">
  7. <!-- La connexion avec le DNS ne fonctionne pas -->
  8. <center><form name="connexion" method="post" action="test_ftp.php">
  9. <input type="hidden" name="repertoire" value="<?=$rep?>">
  10. <input type="hidden" name="test" value="0">
  11. IP : <input type="text" name="ip"><br>
  12. Login : <input type="text" name="login"><br>
  13. MDP : <input type="password" name="mdp"><br>
  14. <input type="submit" value="Connexion au FTP">
  15. </form></center>
  16. </body>
  17. </html>


 
Voici test_ftp.php :

Code :
  1. <?
  2. session_start();
  3. function supp($chaine1)
  4. {
  5. $chaine2="";
  6. for($a=0;$a<strlen($chaine1);$a++)
  7. {
  8.  if($chaine1[$a]==" " )
  9.  {
  10.   if($chaine1[$a+1]!=" " )
  11.    $chaine2=$chaine2.$chaine1[$a];
  12.  }
  13.  else
  14.   $chaine2=$chaine2.$chaine1[$a];
  15. }
  16. return($chaine2=explode(" ", $chaine2));
  17. }
  18. function Affichage_Rep($connexion)
  19. {
  20. // Accès au bon répertoire
  21. ftp_chdir($connexion,$_SESSION['repertoire']);
  22. // Répertoire en cours
  23. $rep_courant=ftp_pwd($connexion);
  24. echo '<br>Répertoire courant "'.$rep_courant.'"<br>';?>
  25. <table><tr>
  26.  <td id="titre" width="200">Nom</td>
  27.  <td id="titre" width="100">Taille</td>
  28.  <td id="titre" width="100">Date</td>
  29. </tr></table>
  30. <? // Fait une liste détaillée des fichiers dans un dossier
  31. $ftp_rawlist=ftp_rawlist($connexion,$rep_courant);
  32. // Transforme plusieurs caractères identique en un seul (ici, l'espace)
  33. for($i=0;$i<count($ftp_rawlist);$i++)
  34. {
  35.  $chaine2=supp($ftp_rawlist[$i]);?>
  36.  <table><tr>
  37.   <td width="200" onMouseOver="this.style.background='#EAEAEA'" onMouseOut="this.style.background=''">
  38.   <?if($chaine2[0]{0}=="d" )
  39.    echo $chaine2[8];
  40.   else{?>
  41.    <a href="test_ftp.php?action=<?=$chaine2[8]?>"><?=$chaine2[8]?></a>
  42.   <?}?>
  43.   </td>
  44.   <td class="ct"><?=$chaine2[4]?></td>
  45.   <td class="ct"><?=$chaine2[6]." ".$chaine2[5]." ".$chaine2[7]?></td>
  46.  </tr></table>
  47.  <?
  48. }
  49. }
  50. ?>
  51. <html>
  52. <head>
  53. <style>
  54. #titre{background-color:red;color:white;text-align:center;font-weight:bold}
  55. .ct{text-align:center;width:100px}
  56. </style>
  57. </head>
  58. <body>
  59. <?
  60. // Première venue et enregistrement des variables de session
  61. if(isset($_POST['repertoire'])&&$_POST['test']==0)
  62. {
  63. $_SESSION['ip']=$_POST['ip'];
  64. $_SESSION['login']=$_POST['login'];
  65. $_SESSION['mdp']=$_POST['mdp'];
  66. $_SESSION['repertoire']=$_POST['repertoire'];
  67. // Le port est 21 et la connexion ne dure que 90 sec par défaut
  68. $connexion=ftp_connect($_POST['ip'])or die("Impossible de se connecter à ".$_POST['ip']);
  69. if(ftp_login($connexion,$_POST['login'],$_POST['mdp']))
  70. {
  71.  echo "Connecté sur ".$_POST['login']."@".$_POST['ip']."<br>";
  72.  Affichage_Rep($connexion);
  73. }
  74. else
  75.  echo "Impossible de se connecter avec ".$_POST['ip'];
  76. ftp_close($connexion);
  77. }
  78. // Partie quand on revient en arrière
  79. else if(isset($_POST['test'])&&$_POST['test']==1)
  80. {
  81. $connexion=ftp_connect($_SESSION['ip'])or die("Impossible de se connecter à ".$_SESSION['ip']);
  82. if(ftp_login($connexion,$_SESSION['login'],$_SESSION['mdp']))
  83. {
  84.  echo "Connecté sur ".$_SESSION['login']."@".$_SESSION['ip']."<br>";
  85.  Affichage_Rep($connexion);
  86. }
  87. else
  88.  echo "Impossible de se connecter avec ".$_SESSION['ip'];
  89. ftp_close($connexion);
  90. }
  91. // Partie de téléchargement
  92. else if(isset($_GET['action']))
  93. {
  94. $connexion=ftp_connect($_SESSION['ip'])or die("Impossible de se connecter à ".$_SESSION['ip']);
  95. if(ftp_login($connexion,$_SESSION['login'],$_SESSION['mdp']))
  96.  if(ftp_get($connexion,$_GET['action'],$_SESSION['repertoire']."/".$_GET['action'],FTP_BINARY))
  97.  {?>
  98.   <p>Le fichier <?=$_GET['action']?> a été écrit avec succès.</p>
  99.  <?}
  100.  else
  101.   echo "Echec de l'opération.";
  102. ftp_close($connexion);?>
  103. <form method="post" action="test_ftp.php">
  104.  <input type="hidden" name="test" value="1">
  105.  <input type="submit" value="Retour">
  106. </form>
  107. <?
  108. }
  109. else
  110. echo "Il faut se connecter au FTP avant.";
  111. ?>
  112. </body>
  113. </html>


 
Ce script fonctionne dans l'ensemble sauf un truc essentiel : il ne sauvegarde pas le fichier voulu sur mon disque.
Explication :
Ce script est sur un site web, je suis chez moi et je lance ce script avec mon navigateur et je click sur un fichier pour le télécharger. Le fichier se télécharge bien mais pas chez moi, il est téléchargé sur le site web.
Je pense qu'il faut bien régler "ftp_get" au niveau du premier $_GET['action'] (chemin du téléchargement) mais je ne sais pas comment faire pour lui indiquer chez moi.
Bref, si vous savez comment faire pour le $_GET['action'] ou s'il existe une autre solution, ça serait bien aimable à vous de la faire partager surtout que je dois faire ça avant la semaine prochaine pour mon chef (non j'ai pas la pression).
Au fait, je suis obligé de passer par du HTTP et non directement en FTP car ça sera une appli pour des clients qui ont des proxy qui bloquent tout sauf le HTTP (clap clap clap les admins réseaux :p)
 
Merci ciao


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
mood
Publicité
Posté le 27-05-2004 à 09:57:53  profilanswer
 

n°741099
Thierry Ch​atel
Posté le 27-05-2004 à 10:08:17  profilanswer
 

Mais le serveur web ne peut pas écrire sur ton disque dur !
C'est le browser web qui doit faire le FTP si tu veux récupérer le fichier en local.


---------------
Info-Camargue, le portail de la Camargue
n°741233
NerOcrO
PrOut
Posté le 27-05-2004 à 11:13:18  profilanswer
 

En gros, tu me dis que ce n'est pas possible ?


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.

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

  Problème de transfert de fichier avec le protocole FTP

 

Sujets relatifs
Problème de tableau dynamiqueprobleme de Net::Ping
[JAVA] ANT :mettre un timestamp plusieurs fois de suite sur un fichierDe Acces à SQL server: problème de requête Helpppppppppppp!!!
problème evec un input de type=file[BATCH] fichier fonctionnant sous XP et pas sous 98
probleme de redondance à resoudre / site intra PHPrecherche et remplacement dans le fichier meme
longueur d'un fichier (python)Un petit problème avec VBA Access
Plus de sujets relatifs à : Problème de transfert de fichier avec le protocole FTP


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