Page 1 sur 2
Download d'un dossier en ftp
Posté : 06 avr. 2010, 16:06
par guess
Bonjour à tous,
Je suis nouveau dans l'univers PHP, et en ce moment je développe un script en php pour télécharger un dossier se trouvant dans un serveur distant. J'ai réussi à écrir le scripte pour que je me connecte à ce serveur, et j'arrive à me placer dans la racine du dossier qui m'intéresse. le problème c'est que le dossier en question change de nom tous les jours comme suit:
100405 (hier)
100406 (aujourd'hui)
100407 (demain)...
alors quand je fais:
if (ftp_chdir($ftp, "/Chemin/de/mon/dossier/100406/); //se place dans le dossier voulu
{
echo "le dossier courant est maintenant :" . ftp_pwd($ftp) . "\n";
}
else
{
echo "impossible de changer de dossier \n";
}
ftp_get ($ftp, "/chemin/où/télécharger/mon/dossier /, "toto.txt", FTP_BINARY); //télécharge le fichier présent dans le dossier 100406
Le problème c'est qu'avec ce script, lorsque nous serons demain, le dossier du serveur changera de nom comme expliqué, et mon scripte sera obsolète
comment faire pour mettre à jour mon scipte PHP pour pouvoir chaque jour télécharger le dernier dossier créé

Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 16:11
par devlop78
100407 = 07/04/2010. tu peux donc essayer avec date() d'obtenir ce chiffre. Regarde la doc de date().
Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 16:14
par devlop78
if (ftp_chdir($ftp, "/Chemin/de/mon/dossier/100406/); //se place dans le dossier voulu
{
echo "le dossier courant est maintenant :" . ftp_pwd($ftp) . "\n";
}
else
{
echo "impossible de changer de dossier \n";
}
$dossier = date("ymd");
ftp_get ($ftp, $dossier , "toto.txt", FTP_BINARY); //télécharge le fichier présent dans le dossier 100406
Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 16:26
par guess
merci devlopnet,
mais d'après ce que je veux faire, le $dossier devrais plutot se plasser dans:
if (ftp_chdir($ftp, "/Chemin/de/mon/dossier/100406/); //se place dans le dossier voulu
car c'est lui qui chnage tous les jours....
peut-on appliquer ce que t'a proposé dans ce cas ci
et obtenir quelque chose du genre:
if (ftp_chdir($ftp, "/Chemin/de/mon/dossier/$dossier/); //se place dans le dossier voulu
Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 16:36
par devlop78
oui si tu mets l'affectation de variable $fichier avant son appel et que tu n'oublies pas le double quote à ta fonction ^^
$fichier ne contient que 100407 par exemple, donc tu peux adapter pour le placer où tu veux.
Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 16:46
par guess
oui, rassure toi dans mon script il y a bien le double quote
mais ça ne marche toujours pas.... j'ai l'impression que la variable affectée $dossier ne prend pas l'effet voulu lorsqu'elle se trouve justement entre guillemets.
du coup je commence à me demander si c'est vraiment réalisable

pourtant ça à l'air super simple mais je ne maitrise pas PHP...et la piste du date() m'a l'air bonne.
Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 17:01
par devlop78
fais voir ton code et écris ici ce que te retourne echo $fichier; stp
Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 17:02
par devlop78
Euhhh pas $fichier mais $dossier
Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 17:12
par Dr@ke
Et ceci?
$chemin = '/Chemin/de/mon/dossier/' . date('dmy') . '/';
Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 17:17
par devlop78
non ça commence par l'année
Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 17:18
par guess
voici mon code (qui marche bien tant que je spécifie le bon dossier)
<?php
if(($ftp = ftp_connect('192.168.0.17',21)) == false)
{
echo 'erreur de connexion...';
}
if(!ftp_login($ftp, 'invit1', 'mdp1'))
{
echo 'Identification échouée...';
}
if(ftp_chdir($ftp,'/upload/100406/'));
else
{
echo 'impossible de changer de dossier';
}
ftp_get($ftp, '/home/solafin/Documents/Work/toto.txt', 'toto.txt', FTP_BINARY);
ftp_close($ftp);
?>
et voici le code tel que je l'ai modifié:
<?php
if(($ftp = ftp_connect('192.168.0.17',21)) == false)
{
echo 'erreur de connexion...';
}
if(!ftp_login($ftp, 'invit1', 'mdp1'))
{
echo 'Identification échouée...';
}
$dossier = date("ymd");
if(ftp_chdir($ftp,'/upload/$dossier/'));
else
{
echo 'impossible de changer de dossier';
}
ftp_get($ftp, '/home/solafin/Documents/Work/toto.txt', 'toto.txt', FTP_BINARY);
ftp_close($ftp);
?>
et là ça me retourne:
Warning: ftp_chdir(): Failed to change directory. in /home/solafin/Documents/Work/DevC/test.php on line 11
impossible de changer de dossier
Warning: ftp_get(): Failed to open file. in /home/solafin/Documents/Work/DevC/test.php on line 17
Warning: ftp_get(): Failed to open file. in /home/solafin/Documents/Work/DevC/test.php on line 18
Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 17:20
par devlop78
A bah ouai
if(ftp_chdir($ftp,'/upload/$dossier/'));
Tout à l'heure tu avais mis des doubles quotes ... si tu mets des simples quotes avec une variable dedans ça ne marche pas ...
Remplaces par des doubles quotes
if(ftp_chdir($ftp,"/upload/$dossier/"));
Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 17:26
par guess
Et ceci?
$chemin = '/Chemin/de/mon/dossier/' . date('dmy') . '/';
même chose avec çà....
Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 17:29
par Dr@ke
oui normal c'est:
$chemin = '/Chemin/de/mon/dossier/' . date('ymd') . '/';
Sinon regarde le post précédent de
devlopnet
Re: Download d'un dossier en ftp
Posté : 06 avr. 2010, 17:30
par guess
A bah ouai
if(ftp_chdir($ftp,'/upload/$dossier/'));
Tout à l'heure tu avais mis des doubles quotes ... si tu mets des simples quotes avec une variable dedans ça ne marche pas ...
Remplaces par des doubles quotes
if(ftp_chdir($ftp,"/upload/$dossier/"));
ben j'ai mis les doubles quote et tjr le même message.... est ce que j'ai le droit de mettre l'an le mois et le jour dans l'ordre qu je veux dans date()?