Download d'un dossier en ftp

Mammouth du PHP | 985 Messages

06 avr. 2010, 17:39

Impossible car si ceci fonctionne:
if(ftp_chdir($ftp,'/upload/100406/'));
Alors ceci doit obligatoirement fonctionner:
if(ftp_chdir($ftp, '"/upload/' . date('ymd') . '/"'));
Ou alors tu as un bug avec ta fonction date(), donc test:
echo '"/upload/' . date('ymd') . '/"';
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:55

Je rappelle que je suis débutant en PHP, ou dois-je ajouter cette ligne de code? echo '/upload/' . date('ymd') . '/';

et que dois-je faire ensuite?

:mrgreen:

Eléphanteau du PHP | 12 Messages

06 avr. 2010, 17:59

Un petit éspoire quand même, le message d'erreur à changé dans le bon sens:

impossible de changer de dossier/upload/100406/
Warning: ftp_get(): Failed to open file. in /home/solafin/Documents/Work/DevC/test.php on line 17

maintenant il reconnait le dossier mais il n'arrive pas à l'ouvrir, ou en tout cas à changer de repertoir vers ce dossier :arrow:

Mammouth du PHP | 985 Messages

06 avr. 2010, 18:02

essaye comme ceci:
<?php
if(($ftp = ftp_connect('192.168.0.17',21)) == false)
{
echo 'erreur de connexion...';
exit;
}
if(!ftp_login($ftp, 'invit1', 'mdp1'))
{
echo 'Identification échouée...';
exit;
}

if(ftp_chdir($ftp, '"/upload/' . date('ymd') . '/"'))
{
ftp_get($ftp, '/home/solafin/Documents/Work/toto.txt', 'toto.txt', FTP_BINARY);
}
else
{
echo 'impossible de changer de dossier';
}

ftp_close($ftp);
?>
Modifié en dernier par Dr@ke le 06 avr. 2010, 18:10, 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, 18:09

J'ai essayé ton code et voici ce qu'il 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

Mammouth du PHP | 985 Messages

06 avr. 2010, 18:12

Et tu dis que ceci fonctionne?
<?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);
?>
Si oui, alors un truc m'échappe :)

++ je dois m'absenter

[EDIT]
Post le code exact qui fonctionne stp
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, 18:17

oui, cela fonctionne, et je vois bien qu'il y a quelque chose qui ne va pas...logiquement ton code devrait marcher aussi.... :|

moi aussi je dois y aller, j'espère que je pourrai conmpter sur vous demain!

:mrgreen:

Mammouth du PHP | 985 Messages

07 avr. 2010, 00:52

Essaye comme ceci:
<?php
$chemin = 'upload/' . date('ymd');
$fichier = 'toto.txt';
$local = '/home/solafin/Documents/Work/' . $fichier;

$ftp = ftp_connect('192.168.0.17') or die('Erreur de connexion...');

$login = ftp_login($ftp, 'invit1', 'mdp1') or die('Identification échouée...');

if (ftp_chdir($ftp, $chemin)) {
    if (ftp_get($ftp, $local, $fichier, FTP_BINARY)) {
         echo 'Fichier téléchargé: ' . $fichier;
    } else {
         echo 'Erreur de téléchargement: ' . $fichier;
    }
} else {
    echo 'Impossible de changer de dossier: ' . ftp_pwd($ftp) . ' -> ' . $chemin;
}

ftp_close($ftp);
?>
Ensuite, tu peux aussi utiliser la méthode classique de téléchargement avec la fonction readfile():
<?php
$chemin =  '/upload/' . date('ymd') . '/';
$fichier = 'toto.txt';

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($fichier) . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '. filesize($fichier));
readfile($chemin . $fichier);
?>
Au moins la tester :wink:
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

07 avr. 2010, 09:49

Salut Dr@ke, et merci pour ton aide, j'ai trouvé grace à toi l'erreur d'où provenait le problème. =D>
En fait au lieu de faire:
if(ftp_chdir($ftp, '"/upload/' . date('ymd') . '/"'))
il fallait plutot faire:
if(ftp_chdir($ftp, '/upload/' . date('ymd') . '/'))
et maintenant ça marche comme sur des roulette (bien qu'on ne marche pas sure des roulettes, mais on roule sur des roulettes, j'ai tjr trouvé que cette expression manquait de bon sens....m'enfin :lol: )

au plaisir de vous exposer de plus amples problèmes :mrgreen:


Problème résolu!

PS: comment fais-t-on pour marquer le sujet comme résolu??? je trouve pas l'onglet...(oui je suis pas nul QUE en php)

Mammouth du PHP | 985 Messages

07 avr. 2010, 10:44

Oui je sais, c'est pour cela que j'ai posté un nouveau code ensuite, qui doit fonctionner aussi et sans modifications.
Je devais être fatigué hier pour ajouter bêtement des guillemets :roll:
En passant, tu devrais t'inspirer du dernier code (ftp_chdir), car il y a une gestion des erreurs, qui sont dans ce genre d'opérations plutôt critiques :wink:
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

07 avr. 2010, 14:20

oui, je vais m'en inspirer, ça à l'air plus propre comme code.

merci encore! :!: