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 :evil:

comment faire pour mettre à jour mon scipte PHP pour pouvoir chaque jour télécharger le dernier dossier créé :shock: :priere:

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 :mrgreen:

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()?