Download d'un dossier en ftp

Eléphanteau du PHP | 12 Messages

06 avr. 2010, 16:06

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:

devlop78
Invité n'ayant pas de compte PHPfrance

06 avr. 2010, 16:11

100407 = 07/04/2010. tu peux donc essayer avec date() d'obtenir ce chiffre. Regarde la doc de date().

devlop78
Invité n'ayant pas de compte PHPfrance

06 avr. 2010, 16:14

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

Eléphanteau du PHP | 12 Messages

06 avr. 2010, 16:26

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

devlop78
Invité n'ayant pas de compte PHPfrance

06 avr. 2010, 16:36

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.

Eléphanteau du PHP | 12 Messages

06 avr. 2010, 16:46

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.

devlop78
Invité n'ayant pas de compte PHPfrance

06 avr. 2010, 17:01

fais voir ton code et écris ici ce que te retourne echo $fichier; stp

devlop78
Invité n'ayant pas de compte PHPfrance

06 avr. 2010, 17:02

Euhhh pas $fichier mais $dossier

Mammouth du PHP | 985 Messages

06 avr. 2010, 17:12

Et ceci?
$chemin = '/Chemin/de/mon/dossier/' . date('dmy') . '/';
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

devlop78
Invité n'ayant pas de compte PHPfrance

06 avr. 2010, 17:17

non ça commence par l'année

Eléphanteau du PHP | 12 Messages

06 avr. 2010, 17:18

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

devlop78
Invité n'ayant pas de compte PHPfrance

06 avr. 2010, 17:20

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/"));

Eléphanteau du PHP | 12 Messages

06 avr. 2010, 17:26

Et ceci?
$chemin = '/Chemin/de/mon/dossier/' . date('dmy') . '/';

même chose avec çà....

Mammouth du PHP | 985 Messages

06 avr. 2010, 17:29

oui normal c'est:
$chemin = '/Chemin/de/mon/dossier/' . date('ymd') . '/';
Sinon regarde le post précédent de devlopnet
Modifié en dernier par Dr@ke le 06 avr. 2010, 17:30, modifié 1 fois.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphanteau du PHP | 12 Messages

06 avr. 2010, 17:30

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