[RESOLU] Transfert d'un fichier d'un serveur à un autre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Transfert d'un fichier d'un serveur à un autre

Re: Transfert d'un fichier d'un serveur à un autre

par lelapinou » 11 mars 2013, 19:40

Salut tout le monde. ALors je sais que j'arrive comme un cheveux dans la soupe, mais je tente de faire la même manipulation qu'indiquée sur le post, par contre je rencontre divers souci qui n'ont rien à voir avec ceux de mon prédécesseur posteur.
Alors la première différence est de taille : je veux transférer des milliers de fichiers et non 1 seul (c'est pour gain de place et pour ne pas avoir à faire du download et upload via mon pc)
Le premier souci que je constate est que certains fichiers sont créés à vide
le deuxième souci est que le traitement s'arrête sans message d'erreur.

Je vous poste mon code :

Code : Tout sélectionner

function rec_copy($source_path, $destination_path, $con) { ftp_site($con, 'CHMOD 0777 '.$destination_path); ftp_chdir($con,$destination_path); if (is_dir($source_path)) { chdir($source_path); $handle=opendir('.'); set_time_limit(0); $i == 1; while (($file = readdir($handle))!==false) { if (($file != ".") && ($file != "..")) { if (is_dir($file)) { // here i am restricting the folder name 'propertyimages' from being copied to remote server. -- VK if($file != "propertyimages") { rec_copy ($source_path."/".$file, $file, $con); chdir($source_path); ftp_cdup($con); } } if (is_file($file)) { $fp = fopen($file,"r"); // this will convert spaces to '_' so that it will not throw error. -- VK if(ftp_fput ($con, str_replace(" ", "_", $file), $fp,FTP_BINARY)) { echo $i.'- '.$file.' transféré'.'<br>'; ftp_site($con, 'CHMOD 0777 '.str_replace(" ", "_", $file)); } else { echo $i.'- '.$file.' non transféré'.'<br>'; } fclose($fp); } } $i++; } closedir($handle); } }
Merci! :oops:

par Invité » 22 juil. 2009, 11:59

Bonjour et merci pour votre aide, en fait le seul problème était que le serveur FTP sur lequel je voulais déposer était en mode passif. Problème résolu avec la commande passv.

Bien à vous tous

par Yosh » 22 juil. 2009, 11:35

Si tu veux envoyer un fichier de ton poste vers le serveur, il faut que tu passe par un formulaire d'upload qui enverra via FTP le fichier...

par Ryle » 22 juil. 2009, 11:30

Ben la principale différence, c'est que php sait faire le second (transférer un fichier sur le serveur vers un serveur distant), mais pas le premier (transferer un fichier depuis ton poste) ...

Les fonctions ftp de php lui permettent de se comporter comme un client FTP : il peut se connecter à un serveur ftp distant pour y déposer ou y récupérer des fichiers depuis le serveur où il est installé, comme tu le fais lorsque tu mets ton site en ligne.
En revanche il est totalement incapable de se connecter à ta machine pour déposer ou récupérer un fichier via ftp si tu n'installes pas un serveur ftp (et on en revient alors au point précédent :)).

par Invité » 22 juil. 2009, 09:09

Merci, je vais essayer avec ce code, mais après lecture de pas mal de tuto, je crois qu'il y a une defférence entre :
sélectionner un fichier en local et l'envoyer en FTP et sélectionner un fichier sur mon serveur et l'envoyer par ftp.
Je tente avec ce code et je vous dis tout ca.

Merci pour votre aide

par enneite » 21 juil. 2009, 14:27

Perso je fais comme ceci:
$cnx_ftp=ftp_connect("$adresse_ip");
$cnx_ftp_auth=ftp_login($cnx_ftp,"$nom_serveur_ftp",'$mot_de_passe_ftp');
if ((!$cnx_ftp) || (!$cnx_ftp_auth))
{
	echo "La connexion FTP a échoué !";
}
else
{
	echo "connexion OK\n\n";
               //affichage du dossier courant
	$dossier_crt=ftp_pwd($cnx_ftp) ;
	echo "dossier courant : $dossier_crt\n\n";

               //On se place dans le bon repertoire en rentrant des chemin absolus en se placant à la racine de l'ordi (par exemple c:\)
	$bool=ftp_chdir($cnx_ftp,"dossier1/dossier2/dossier3");

            //on verifie qu'on est au bon endroit
	$dossier_crt=ftp_pwd($cnx_ftp) ;
	echo "dossier courant : $dossier_crt\n\n";

   //on a une liste des fichiers du dossier            
              $liste=array();
	$liste=	ftp_rawlist ($cnx_ftp, $dossier_crt);
	print_r($liste);echo"\n\n";


//J'envoie mes fichiers au format binaire
	$bool=ftp_put ($cnx_ftp, "$nom_fichier", "$chemin_plus_nom_defichier_absolu_sur_serveur_distant", FTP_BINARY)  ;
	if($bool==true)echo " le transfert de fichier via le protcole FTP a ete correctement effectue\n\n";
	else echo "probleme, echec du transfert\n\n";

	
	ftp_quit($cnx_ftp);
	echo "fin de la connexion\n";


}

par Invité » 21 juil. 2009, 13:55

Oui c'est dans le même répertoire

par Ryle » 21 juil. 2009, 12:31

A première vue ton code semble correct... quelles erreurs rencontres-tu ?

A noter que si tu ne précises pas le chemin du fichier source dans le ftp_put() (tu spécifies seulement son nom), cela sous entend que ton script php et le fichier à transférer sont dans le même répertoire... est-ce bien le cas ?

par Invité » 21 juil. 2009, 10:07

Bonjour et merci pour vos réponses. Je suis bloqué, je ne sais pas si il est possible de prendre un fichier sur mon serveur et de l'envoyer sur le serveur d'annonce de mon prestataire.

Voici le code

Code : Tout sélectionner

// Envoi vers le FTP SeLoger $ftp_server = 'ftp.transfert.com'; $ftp_user_name = 'name'; $ftp_user_pass = 'pass'; $name = "aci83600"; $destination_file = ".aci83600zip"; $source_file = ".aci83600zip"; // CONNEXION FTP --------------------------------------------------------- $type = "FTP_ASCII"; echo "type de connexion $type <BR>"; $conn_id = ftp_connect("$ftp_server"); $login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass"); if ((!$conn_id) || (!$login_result)) { echo "La connexion FTP a échoué!"; echo "Tentative de connexion à $ftp_server en tant que $ftp_user_name"; die; } else { echo "Connecté à $ftp_server, avec $ftp_user_name <BR>"; } // TRANSFERT FTP $upload = ftp_put($conn_id, "$destination_file", "$source_file", $type); if (!$upload) { echo "<h2 color=\"red\">Le téléchargement FTP ".$destination_file." ".$source_file." échoué!</h2><hr>"; } else { echo "Téléchargement de ".$source_file." sur ".$ftp_server."<b> ".$dir."</b> en ".$destination_file." <b><font color=#00FF00 size=3>OK</font></b><hr>"; } // FERMETURE DU REPERTOIRE RACINE, DE LA CONNEXION FTP ftp_quit($conn_id);
Merci bien

par stopher » 20 juil. 2009, 08:56

Slt ,

Pour régler un problème , il faut le voir .. sans code , on ne peut pas deviner ce qui ne colle pas .. :!:

Montre nous ton code , et expliques nous ce qui ne fonctionne pas exactement .

Ch.

par Thanatos » 18 juil. 2009, 16:01

Transfert d'un fichier d'un serveur à un autre

par Didgrasse » 17 juil. 2009, 19:25

Bonjour à tous,

Je bloque sur une fonction et j'essaie de m'en sortir avant de partir en we.

Voilà ! Je dois transférer par une action (bouton) déclanchée par un client web le transfert d'un fichier zip généré par son application à un serveur FTP distant dont j'ai les logins et qui permettra d'alimenter une base d'annonces...

Comme je n'utilise pas la fonction $_FILES, le fichier étant déjà sur le serveur, je bloque pour l'envoi par FTP.

Quelqu'un a t'il une source pour m'aider à régler ce problème ?

Bien à vous