Upload via FTP

Résolu
jipe32 Messages postés 277 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 11 mai 2010 - 25 juin 2006 à 17:21
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 27 juin 2006 à 12:07
Bonjour à tous,
J'ai trouvé ce code sur ASP-PHP.net. C'est un code d'upload de fichier via FTP:

<?

$conn_id = ftp_connect("ftp.web-stockage.com"); // Connexion au ftp
ftp_login($conn_id,"webst","d291515"); // Identification
$RepDistant="upload/"; // Répertoire distant
$UnLien="http://webstockage.dyndns.org/"; // URL du site
$PoidsMax=1; // Exprimé en Mo, ici 5Mo

$PoidsMax=$PoidsMax*1000000; // On convertir en octets 5Mo -> 5 000 000 octets

// Notre fonction de suppression
// LeParam1 : Nom fichier à supprimer
// LeParam2 : Connexion FTP
function Supprim($LeParam1,$LeParam2){ // Notre fonction de suppression

   global $RepDistant; // On récupère notre variable globale

   // On supprime le fichier
   if(ftp_delete($LeParam2,$RepDistant."$LeParam1")==true){ ?>
      <!-- On affiche un message de succès si l'opération réussit -->
      <tr>
        <td align="center" valign="middle">

         </td>
        <td valign="middle">

         Le fichier '<? echo $LeParam1; ?>' a été effacé avec succès.

</td>
      </tr>
   <? }else{ ?>
      <!-- On affiche un message d'erreur si l'opération échoue -->
      <tr>
        <td align="center" valign="middle">

         </td>
        <td valign="middle">

         La suppression de '<? echo $LeParam1; ?>' a échoué.

</td>
      </tr>
   <? }  
}

// Notre fonction d'envoi
// LeParam1 : Nom du temporaire du fichier après transfert sur le serveur principal
// LeParam2 : Nom du fichier
// LeParam3 : Connexion FTP
function Upload($LeParam1,$LeParam2,$LeParam3){
  
   global $RepDistant; // On récupère nos variables globale
   global $UnLien;

   // Petit cadeau bonus, un code permettant d'interdire l'envoi de fichier .php
   if (strlen(stristr($LeParam2."a",".php"))==0){

      if(ftp_put($LeParam3,$RepDistant."$LeParam2",$LeParam1,1)==1){ ?>
         <!-- On affiche un message de succès si l'opération réussit -->
         <tr>
           <td align="center" valign="middle">

            </td>
           <td valign="middle">

            Le transfert de '<? echo $LeParam2; ?>' a été effectué avec succès.(
            [<? echo $UnLien.$RepDistant. " target="_blank">
               <? echo $UnLien.$RepDistant."$LeParam2"; ?>
            ]
            )

           </td>
         </tr>
      <? }else{ ?>
         <!-- On affiche un message d'erreur si l'opération échoue -->
         <tr>
           <td align="center" valign="middle">

            </td>
           <td valign="middle">

            Le transfert de '<? echo $LeParam2; ?>' a échoué.

</td>
         </tr>
      <? }
   }
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">

var Nb=1;
function AjoutChamps(LeParam){

   Nb++;
  
   // Code ajouté : On clone aussi le champs caché qui recevra le nom du fichier
   LeCache=document.getElementById("File"+(Nb-1)).cloneNode(true);
   LeCache.name="File"+Nb;
   LeCache.id="File"+Nb;
   document.getElementById("LesChamps").appendChild(LeCache);
   // --------------------------------------------------------------------
  
   LeFile=document.getElementById("Champ"+(Nb-1)).cloneNode(true);
   LeFile.name="Champ"+Nb;
   LeFile.id="Champ"+Nb;
   document.getElementById("LesChamps").appendChild(LeFile);
   LeRetourChariot=document.createElement("br");
   document.getElementById("LesChamps").appendChild(LeRetourChariot);
   document.getElementById("Champ"+(Nb-1)).onchange="";
   if(Nb==10)
      document.getElementById("Champ"+(Nb)).onchange="";
}

function Envoyer(){

   // Cette fonction a pour but de déterminer le nom du fichier sélectionné dans les champs FILE,
   // de la stocker dans le champs chaché correspondant et d'envoyer le formulaire
   // Pour celà, pour chaque champs, elle doit récupérer la chaine qui se trouve après le dernier '\'
   // c:\photos\maphoto.jpg -> maphoto.jpg

   var Boucle=1;
   while(document.getElementById("Champ"+Boucle)){ // Pour chaque champ
  
      LeFile=document.getElementById("File"+Boucle);
  
      // On copie l'adresse du fichier dans le champs caché qui lu iest attribué
      LeFile.value=document.getElementById("Champ"+Boucle).value;
     
      // Ensuite, tant que l'on trouve un '\' dans la valeur du champs caché,
      // on supprime tout ce qui se trouve avant celui-ci ainsi que le '\' lui même.
      // Exemple :
      // c:\photos\vacances\moi.jpg
      //   ^---- '\' détecté ! On garde que ce qui se situe après lui
      // photos\vacances\moi.jpg
      //       ^---- '\' détecté ! On garde que ce qui se situe après lui
      // vacances\moi.jpg
      //         ^---- '\' détecté ! On garde que ce qui se situe après lui
      // moi.jpg
      LaPos=LeFile.value.indexOf('\\');
      while(LaPos>0){
         // '\' détecté ! On garde que ce qui se situe après lui
         LeFile.value=LeFile.value.substring(LaPos+1,LeFile.value.length+1);
         // On cherche le prochain '\'
         LaPos=LeFile.value.indexOf('\\');
      }
      Boucle++;
   }
  
   // On envoye ensuite le formulaire
   document.LeForm.submit();
}

</script>
</head>

UPLOADS

&nbsp;



 
display:none;<? } ?>">
    <?

// Si la variable $_POST[\"Supprim\"] a une valeur alors on appelle notre fonction de suppression
if ($_POST[\"Supprim\"]! =\"\"){
   Supprim($_POST[\"Supprim\"],$conn_id);
}

// Si la variable $_POST[\"File1\"] a une valeur alors on appelle notre fonction d'upload
if($_POST[\"File1\"]!= \"\"){
?>
      <!-- <?
       // Si le répertoire n'existe pas, on le crée
       if (ftp_chdir($conn_id,$RepDistant)==false){
         ftp_mkdir($conn_id,$RepDistant);  
      }  
?>-->
      <?  
        // Tant qu'il y a des champs, on transfert...
        $i=1;
        while($_POST[\"File\".$i]!=\"\"){
         Upload($_FILES[\"Champ\".$i][\"tmp_name\"],$_POST[\"File\".$i],$conn_id);
         $i++;
      }
}
?>
   

 

 
  <!-- On affiche le poids de stockage maximal -->
  Poids de stockage maximal : <? echo round($PoidsMax/1000000,2); ?> Mo.

 
  Vos fichiers :
      ----

     <!-- La ligne d'en-tête -->
      Nom,
      Adresse,
      Taille,
      Supprim,
   
    <?
$TailleTotale =0; // Cette variable nous permettre de calculer le poids déjà occupé dans le répertoire
$DesFichier=ftp_nlist($conn_id,$RepDistant);
for($i=2;$i<sizeof($DesFichier);$i++){
   // On énumère la liste des fichiers à partir du 3e élement (2e en partant de 0) puisque
   // la fonction ftp_nlist renvois aussi les liens au répertoire précédent (..) ect...

   // La fonction ftp_nlist renvoye la liste des fichiers avec leur nom et leur adresse relative
   // Exemple : /upload/test//photo.jpg
   // Le nom du fichier est séparé de l'adresse par //
   // Pour le récupérer, on supprimer donc tout ce qui est avant le //
   $UnFichier=substr($DesFichier[$i],strpos($DesFichier[$i],\"//\")+2);
?>
    ----

              <!-- On affiche le nom du fichier -->
       
<? echo $UnFichier; ?>

    ,
              <!-- On affcihe le lien menant au fichier -->
       

         ICI (mises à jour toutes les minutes environ car je le modifie un peu tout le temps pour essayer de le faire marcher

Venez chasser les vampires, cliquez ici: www.bitefight.fr

3 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
27 juin 2006 à 12:07
Salut,

?? je croyais que php pouvait faire : file_put_contents('ftp://...', $content) or ...;
je me trompes ?

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
3
jipe32 Messages postés 277 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 11 mai 2010
25 juin 2006 à 19:27
je précise que j'ai changé le code, mais il ne fonctionne joujours pas:

<?

$conn_id =  ftp_connect("ftp.xxxxx.net"); // Connexion au ftp
ftp_login($conn_id,"login","pass"); // Identification
$RepDistant="/uploads/AspPhp/"; // Répertoire distant
$UnLien="http://www.monurl.com"; // URL du site
$PoidsMax=1; // Exprimé en Mo, ici 5Mo

$PoidsMax=$PoidsMax*1000000; // On convertir en octets 5Mo -> 5 000 000 octets

// Notre fonction de suppression
// LeParam1 : Nom fichier à supprimer
// LeParam2 : Connexion FTP
function Supprim($LeParam1,$LeParam2){ // Notre fonction de suppression

   global $RepDistant; // On récupère notre variable globale

   // On supprime le fichier
   if(ftp_delete($LeParam2,$RepDistant."$LeParam1")==true){ ?>
       <!-- On affiche un message de succès si l'opération réussit -->
      <tr>
        <td align ="center" valign= "middle">

         </td>
        <td valign="middle">

         Le fichier '<? echo $LeParam1; ?>' a &eacute;t&eacute; effac&eacute; avec succ&egrave;s.

</td>
      </tr>
   <? }else{ ?>
       <!-- On affiche un message d'erreur si l'opération échoue -->
      <tr>
        <td align ="center" valign= "middle">

         </td>
        <td valign="middle">

         La suppression de '<? echo $LeParam1; ?>' a &eacute;chou&eacute;.

</td>
      </tr>
   <? }   
}

// Notre fonction d'envoi
// LeParam1 : Nom du temporaire du fichier après transfert sur le serveur principal
// LeParam2 : Nom du fichier
// LeParam3 : Connexion FTP
function Upload($LeParam1,$LeParam2,$LeParam3){
   
   global $RepDistant; // On récupère nos variables globale
   global $UnLien;

   // Petit cadeau bonus, un code permettant d'interdire l'envoi de fichier .php
   if (strlen(stristr($LeParam2."a",".php"))==0){

      if(ftp_put($LeParam3,$RepDistant."$LeParam2",$LeParam1,1)==1){ ?>
          <!-- On affiche un message de succès si l'opération réussit -->
         <tr>
           <td align ="center" valign= "middle">

            </td>
           <td valign="middle">

            Le transfert de '<? echo $LeParam2; ?>' a &eacute;t&eacute; effectu&eacute; avec succ&egrave;s.(
            [" target="_blank">
               <? echo $UnLien.$RepDistant."$LeParam2"; ?>
            ]
            )

           </td>
         </tr>
      <? }else{ ?>
          <!-- On affiche un message d'erreur si l'opération échoue -->
         <tr>
           <td align ="center" valign= "middle">

            </td>
           <td valign="middle">

            Le transfert de '<? echo $LeParam2; ?>' a &eacute;chou&eacute;.

</td>
         </tr>
      <? }
   }
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">

var Nb=1;
function AjoutChamps(LeParam){

   Nb++;
   
   // Code ajouté : On clone aussi le champs caché qui recevra le nom du fichier
   LeCache=document.getElementById("File"+(Nb-1)).cloneNode(true);
   LeCache.name="File"+Nb;
   LeCache.id="File"+Nb;
   document.getElementById("LesChamps").appendChild(LeCache);
   // --------------------------------------------------------------------
   
   LeFile=document.getElementById("Champ"+(Nb-1)).cloneNode(true);
   LeFile.name="Champ"+Nb;
   LeFile.id="Champ"+Nb;
   document.getElementById("LesChamps").appendChild(LeFile);
   LeRetourChariot=document.createElement("br");
   document.getElementById("LesChamps").appendChild(LeRetourChariot);
   document.getElementById("Champ"+(Nb-1)).onchange="";
   if(Nb==10)
      document.getElementById("Champ"+(Nb)).onchange="";
}

function Envoyer(){

   // Cette fonction a pour but de déterminer le nom du fichier sélectionné dans les champs FILE,
   // de la stocker dans le champs chaché correspondant et d'envoyer le formulaire
   // Pour celà, pour chaque champs, elle doit récupérer la chaine qui se trouve après le dernier '\'
   // c:\photos\maphoto.jpg -> maphoto.jpg

   var Boucle=1;
   while(document.getElementById("Champ"+Boucle)){ // Pour chaque champ
   
      LeFile=document.getElementById("File"+Boucle);
   
      // On copie l'adresse du fichier dans le champs caché qui lu iest attribué
      LeFile.value=document.getElementById("Champ"+Boucle).value;
      
      // Ensuite, tant que l'on trouve un '\' dans la valeur du champs caché,
      // on supprime tout ce qui se trouve avant celui-ci ainsi que le '\' lui même.
      // Exemple :
      // c:\photos\vacances\moi.jpg
      //   ^---- '\' détecté ! On garde que ce qui se situe après lui
      // photos\vacances\moi.jpg
      //       ^---- '\' détecté ! On garde que ce qui se situe après lui
      // vacances\moi.jpg
      //         ^---- '\' détecté ! On garde que ce qui se situe après lui
      // moi.jpg
      LaPos=LeFile.value.indexOf('\\');
      while(LaPos>0){
         // '\' détecté ! On garde que ce qui se situe après lui
         LeFile.value=LeFile.value.substring(LaPos+1,LeFile.value.length+1);
         // On cherche le prochain '\'
         LaPos=LeFile.value.indexOf('\\');
      }
      Boucle++;
   }
   
   // On envoye ensuite le formulaire
   document.LeForm.submit();
}

</script>
</head>

UPLOADS

&nbsp;

 

  
<? if(($_POST["File1"] == '')and($_POST["Supprim"]=="")){ ?>display:none;<? } ?>">
    <? 

// Si la variable $_POST[\"Supprim\"] a une valeur alors on appelle notre fonction de suppression
if ($_POST[\"Supprim\"]!=\"\"){
   Supprim($_POST[\"Supprim\"],$conn_id);
}

// Si la variable $_POST[\"File1\"] a une valeur alors on appelle notre fonction d'upload
if($_POST[\"File1\"]!=\"\"){
?>
       <!--  <?
       // Si le répertoire n'existe pas, on le crée
       if (ftp_chdir($conn_id,$RepDistant) == false){
         ftp_mkdir($conn_id,$RepDistant);   
      }   
?>-->
      <?   
        // Tant qu'il y a des champs, on transfert...
        $i=1;
        while($_POST[\"File\".$i]!=\"\"){
         Upload($_FILES[\"Champ\".$i][\"tmp_name\"],$_POST[\"File\".$i],$conn_id);
         $i++;
      }
}
?>
    

  

  
   <!-- On affiche le poids de stockage maximal -->
  Poids de stockage maximal : <? echo round($PoidsMax/1000000,2); ?> Mo.

  
   Vos fichiers :
      ----

     <!-- La ligne d'en-tête -->
      Nom,
      Adresse,
      Taille,
      Supprim,
    
    <?
$TailleTotale =0; // Cette variable nous permettre de calculer le poids déjà occupé dans le répertoire
$DesFichier=ftp_nlist($conn_id,$RepDistant);
for($i=2;$i<sizeof($DesFichier);$i++){ 
   // On énumère la liste des fichiers à partir du 3e élement (2e en partant de 0) puisque
   // la fonction ftp_nlist renvois aussi les liens au répertoire précédent (..) ect... 

   // La fonction ftp_nlist renvoye la liste des fichiers avec leur nom et leur adresse relative
   // Exemple : /upload/test//photo.jpg
   // Le nom du fichier est séparé de l'adresse par //
   // Pour le récupérer, on supprimer donc tout ce qui est avant le //
   $UnFichier=substr($DesFichier[$i],strpos($DesFichier[$i],\"//\")+2);
?>
    ----

              <!-- On affiche le nom du fichier -->
        
<? echo $UnFichier; ?> 

     ,
              <!-- On affcihe le lien menant au fichier -->
        

         ICI
Merci de m'apporter votre aide
jipe32

Venez chasser les vampires, cliquez ici: www.bitefight.fr
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
26 juin 2006 à 00:54
Tu postes trop de code personne n'a envi d'aider dans ce temps là...
tu peux regarder une de mes sources qui envoie sur un serveur FTP
http://www.phpcs.com/codes/ENVOI-FICHIER-FTP-SUR-SERVEUR-DISTANT_23970.aspx

, EssayezTestez avant de Poser une question !
http://www.lookstrike.com
0
Rejoignez-nous