Upload via FTP [Résolu]

Signaler
Messages postés
277
Date d'inscription
jeudi 23 novembre 2000
Statut
Membre
Dernière intervention
11 mai 2010
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
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

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
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)
Messages postés
277
Date d'inscription
jeudi 23 novembre 2000
Statut
Membre
Dernière intervention
11 mai 2010

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
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
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