Transfert à la volé fichier URL -> FTP

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

molsy26
Nouveau WRInaute
 
Messages: 1
Inscription: Dim Nov 09, 2008 14:20

Transfert à la volé fichier URL -> FTP

Message le Dim Nov 09, 2008 14:33

Bonjour,
je suis debutant en php et j'aimerais savoir comment envoyer à la volé sur un serveur ftp un fichier contenu dans une url (je voudrais en quelque sorte que mon serveur soit une passerelle entre les 2 serveurs http -> ftp).
J'aimerais pouvoir transferer n'importe quel fichier (.rar, .zip, .exe, .jpg ...) et de n'importe quel taille (jusqu'à 10go)

J'ai vu dans ce forum et un autre 2 morceau de script intéressant mais je suis incapable de les mettre en commun pour que ca marche :

Code: Tout sélectionner
$handler = fopen($url_file, "r");
$contents = '';
if($handler)
while(!feof($handler))
$contents .= fread($handler, 8192);
fclose($handler);
$handlew = fopen("/home/ton_fichier.ext", "w");
fwrite($handlew, $contents);
fclose($handlew);



Et ce script pour copier un fichier image:

Code: Tout sélectionner
<?php

$script_name = "images.php";

$repertoire = "../img/";



if($mode=="copy") // Copier une image depuis une URL

{



   echo "<h2>Copie d'image</h2>\n";

   

   $er=0;

   if(!preg_match('/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/(.*)$/', $url, $url_ary)) $er=1;

   if(empty($url_ary[4])) $er=1;

   

   if($er==1) {

?><form name="form1" method="post" action="<? echo $script_name; ?>">

<p><b><font color="red">URL incomplète:</font></b>   

  <input name="url" type="text" id="url" size="100" value="<? echo $url; ?>">

    <input type="submit" name="Submit" value="Copier">

    <input name="mode" type="hidden" id="mode" value="copy">

   <a href="<? echo $script_name; ?>">Annuler</a></p>

</form>

<?php

   }

   else

   {

      $maxsize = 100000;

      

      $base_filename = substr($url_ary[4],strrpos($url_ary[4],"/")+1);

   

      $base_get = '/' . $url_ary[4];

      $port = ( !empty($url_ary[3]) ) ? $url_ary[3] : 80;



      if($base_filename=="") die("<h2>Impossible de télécharger l'image...</h2><p>Erreur de récupération du nom.</p></body></html>");



      if ( !($fsock = fsockopen($url_ary[2], $port, $errno, $errstr)) )

      {

         die("<h2>Impossible de télécharger l'image...</h2><p>Pas de connexion.</p></body></html>");

      }



      fputs($fsock, "GET $base_get HTTP/1.1\r\n");

      fputs($fsock, "Host: " . $url_ary[2] . "\r\n");

      fputs($fsock, "Accept-Language: fr\r\n");

      fputs($fsock, "Accept-Encoding: none\r\n");

      fputs($fsock, "User-Agent: PHP\r\n");

      fputs($fsock, "Connection: close\r\n\r\n");



      unset($data);

      while( !feof($fsock) )

      {

         $data .= fread($fsock, $maxsize);

      }

      fclose($fsock);



      if (!preg_match('#Content-Length\: ([0-9]+)[^ /][\s]+#i', $data, $file_data1) || !preg_match('#Content-Type\: image/[x\-]*([a-z]+)[\s]+#i', $data, $file_data2))

      {

         die("<h2>Impossible de télécharger l'image...</h2><p>Aucune donnée.</p></body></html>");

      }



      $filesize = $file_data1[1];

      $filetype = $file_data2[1];



      if ( !$error && $filesize > 0 && $filesize < $maxsize )

      {

         $data = substr($data, strlen($data) - $filesize, $filesize);



         $filename = $repertoire.$base_filename;



         if(file_exists($filename)) echo "<p>Le fichier de destination ".$base_filename." existe déjà !</p>";

         else

         {

            $fptr = fopen($filename, 'wb');

            $bytes_written = fwrite($fptr, $data, $filesize);

            fclose($fptr);

      

            if ( $bytes_written != $filesize )

            {

               unlink($tmp_filename);

               die("<h2>Impossible de télécharger l'image...</h2><p>Echec d'écriture.</p></body></html>");

            }

            echo "<p>".$base_filename." enregistré avec succès ! <img src='".$repertoire.$base_filename."'></p>";

         }

      }

      else

      {

         die("<h2>Impossible de télécharger l'image...</h2><p>Fichier trop gros.</p></body></html>");

      }

   }

}



if($mode=="upload") // Envoyer une image

{

   

   echo "<h2>Upload d'image</h2>\n";

   

   $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');

   $taille_max = 100000; 

   // vérifications

   if( !in_array( strtolower(substr(strrchr($_FILES['file']['name'], '.'), 1)), $extensions_ok) )

   {

      $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';

   }

   elseif( file_exists($_FILES['file']['tmp_name'])

      and filesize($_FILES['file']['tmp_name']) > $taille_max)

   {

      $erreur = 'Votre fichier doit faire moins de 500Ko !';

   }

   // copie du fichier

   if(!isset($erreur))

   {

      $dest_fichier = basename($_FILES['file']['name']);

      // formatage nom fichier

      // enlever les accents

      $dest_fichier = strtr($dest_fichier,

      'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',

      'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');

      // remplacer les caracteres autres que lettres, chiffres et point par _

      $dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);

      //vérif

      if(file_exists($repertoire.$dest_fichier)) echo "<p>Le fichier de destination existe déjà !</p>";

      else {

         // copie du fichier

         move_uploaded_file($_FILES['file']['tmp_name'], $repertoire.$dest_fichier);

         echo "<p>".$dest_fichier." envoyé avec succès ! <img src='".$repertoire.$dest_fichier."'></p>";

      }

   }

   else{

      echo "<p>".$erreur."</p>";

   }

   

}



if($mode=="del") // Supprimer une image

{

   if(!isset($file)) die("<h2>Aucun nom de fichier !</h2></body></html>");

   

   if(!file_exists($repertoire.$file)) die("<h2>Fichier inexistant !</h2></body></html>");

   

   if(isset($confirm))

   {

      if($confirm+10<time()) die("<h2>L'action a expirée...</h2></body></html>");

   

      unlink($repertoire.$file);

   

      echo "<h2>Entrée supprimée !</h2>";

   }

   else

   {

      echo "<h2>Supression d'une image ?</h2>\n";

      echo "<p>Vous êtes sur le point de supprimer l'image '".$file."' qui ressemble à ça: <img src='".$repertoire.$file."'><br>";

      echo "<b>Etes-vous sûr de vouloir continuer ?<br><font size=\"5\">";

      echo "<a href='".$script_name."?mode=del&file=".$file."&confirm=".time()."'><font color='red'>Oui</font></a> - ";

      echo "<a href='".$script_name."'><font color='green'>Non</font></a></font></b></p>\n";

   }

}

?>



<h2>Ajout d'images</h2>

<form name="form1" method="post" action="<? echo $script_name; ?>">

<p>Copier une image depuis une URL:

    <input name="url" type="text" id="url" value="http://" size="100">

    <input type="submit" name="Submit" value="Copier">

    <input name="mode" type="hidden" id="mode" value="copy">

</p>

</form>

<form action="<? echo $script_name; ?>" method="post" enctype="multipart/form-data" name="form2">

<p>Envoyer une image:

  <input name="file" type="file" size="100">     

  <input type="submit" name="Submit" value="Envoyer">

  <input type="hidden" name="MAX_FILE_SIZE" value="500000" />

  <input name="mode" type="hidden" id="mode" value="upload">

</p>

</form>


Aidez moi svp !!!!

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités