Transférer x fichiers dans un dossier distant

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 : Transférer x fichiers dans un dossier distant

Re: Transférer x fichiers dans un dossier distant

par roseline » 16 avr. 2012, 16:25

Merci pour ces informations!

J'ai fait des tests, sans succès....

Je vous mets ci-dessous le script de test qui est un peu modifié, vu que j'ai repris le tout à sa base.....
Les résultats sont les suivants:
debug 1 : RCH004120120404151946.csv
debug 2 : TRCH004120120404151946.csv
array(0) { }
Il y a eu un problème lors du chargement du fichier RCH004120120404151946.csv

Pour moi, les debug 1 et 2 sont OK!
Le array(0) est aussi correct, vu que le dossier "Traites" ne comprend pas de fichier.
(J'avais essayé de lire le dossier "Retour" qui a des fichiers et il me les affiche bien)
Donc c'est vraiment le ftp_put qui me pose problème :evil:

// TRAITEMENT DES FICHIERS SUR SERVEUR LOCAL
if($dossier = opendir('Retour'))
{
while(false !== ($fichier = readdir($dossier)))
{
if($fichier != '.' && $fichier != '..' && $fichier != 'index.php')
{
$file = $fichier; //le fichier local.
echo "<br>debug 1 : ".$file;
//$remote_file = "./Traites/T'.$fichier.'"; //Le chemin vers le fichier distant.
//$remote_file = "Traites/T$fichier"; //Le chemin vers le fichier distant.
//$remote_file = "/Traites/T$fichier"; //Le chemin vers le fichier distant.
$remote_file = "T$fichier"; //Le chemin vers le fichier distant.
echo "<br>debug 2 : ".$remote_file;

///// Connexion au serveur distant
$ftp_server = $ftp_host;

// Mise en place d'une connexion
$conn_id = ftp_connect($ftp_server) or die("Impossible de se connecter au serveur $ftp_server");

// Identification avec un nom d'utilisateur et un mot de passe
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass) or die("Login faux $conn_id");

// Récupération du contenu d'un dossier
//$contents = ftp_nlist($conn_id, "./Retour");
$contents = ftp_nlist($conn_id, "./Traites");

// Affichage de $contents
var_dump($contents);

// Charge un fichier
//if (ftp_put($conn_id, "./Traites/$remote_file", $file, FTP_ASCII))
//if (ftp_put($conn_id, "/Traites/$remote_file", $file, FTP_ASCII))
//if (ftp_put($conn_id, "/$remote_file", $file, FTP_ASCII))
if (ftp_put($conn_id, "./$remote_file", $file, FTP_ASCII))
{
echo "<br>Le fichier $file a été chargé avec succès\n<br>";
} else {
echo "<br>Il y a eu un problème lors du chargement du fichier $file\n<br>";
}

// Fermeture de la connexion
ftp_close($conn_id);


} // fin du if

} // fin du while

closedir($dossier);

// Fermeture de la connexion
ftp_close($conn_id);

} // fin du if

Re: Transférer x fichiers dans un dossier distant

par Mazarini » 16 avr. 2012, 11:55

Bonjour,

ftp_put retourne vrai si tout se passe bien
if  (ftp_put($conn_id, $remote_file, $file, FTP_ASCII))
{
   echo 'transfert OK';
}
else
{
   echo 'transfert KO';
} 
Il faudrait aussi que tu fasses une connexion avec un client ftp pour voir ou tu arrives à la connexion. Il n'y a peut être pas de répertoire ./Traites tout simplement.

Re: Transférer x fichiers dans un dossier distant

par roseline » 16 avr. 2012, 10:01

Ok, merci pour cette piste.

Je mets cela en place, test, et vous fait un feedback ;-)

Re: Transférer x fichiers dans un dossier distant

par Calimero » 15 avr. 2012, 19:28

Bonjour,

Tu peux commencer par mettre des echo de déboguage partout pour voir où passe ton script dans son éxécution (ainsi que les valeurs des variables au cours du temps). Ainsi tu verras mieux là où ça coince.
<?php
echo "debug 1 : ".$ma_variable;

Transférer x fichiers dans un dossier distant

par roseline » 14 avr. 2012, 17:55

Bonjour,

Je dois transférer les fichiers se trouvant dans le dossier local "Retour" dans un dossier sur un FTP distant qui s’appelle "Traites".
Au passage, je dois ajouter au nom du fichier un "T" avant le nom actuel.
Et je dois supprimer les fichiers du dossier local "Retour" dès qu'ils sont dans le dossier distant "Traites".

Voici mon script - qui pour le moment ne fait rien :-(
.... et je ne vois pas trop où est mon erreur.....

<?php
$ftp_user = ("user");
$ftp_pass = ("pass");
$ftp_host = ("IP");

// TRAITEMENT DES FICHIERS SUR SERVEUR LOCAL
if($dossier = opendir('Retour'))
{
while(false !== ($fichier = readdir($dossier)))
{
if($fichier != '.' && $fichier != '..' && $fichier != 'index.php')
{
$file = $fichier; //le fichier local.
$remote_file = "./Traites/T'.$fichier.'"; //Le chemin vers le fichier distant.

///// Connexion au serveur distant
$ftp_server = $ftp_host;
// Mise en place d'une connexion
$conn_id = ftp_connect($ftp_server) or die("Impossible de se connecter au serveur $ftp_server");

// Identification avec un nom d'utilisateur et un mot de passe
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Charge un fichier
ftp_put($conn_id, $remote_file, $file, FTP_ASCII);
// Supprime le fichier local
unlink($file);
} // fin du if
} // fin du while
closedir($dossier);
// Fermeture de la connexion
ftp_close($conn_id);
} // fin du if
else
echo 'Le dossier n\' a pas pu être ouvert';
?>