Download d'un dossier en ftp

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 : Download d'un dossier en ftp

Re: Download d'un dossier en ftp

par guess » 07 avr. 2010, 14:20

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

merci encore! :!:

Re: Download d'un dossier en ftp

par Dr@ke » 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:

Re: Download d'un dossier en ftp

par guess » 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)

Re: Download d'un dossier en ftp

par Dr@ke » 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:

Re: Download d'un dossier en ftp

par guess » 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:

Re: Download d'un dossier en ftp

par Dr@ke » 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

Re: Download d'un dossier en ftp

par guess » 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

Re: Download d'un dossier en ftp

par Dr@ke » 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);
?>

Re: Download d'un dossier en ftp

par guess » 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:

Re: Download d'un dossier en ftp

par guess » 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:

Re: Download d'un dossier en ftp

par Dr@ke » 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') . '/"';

Re: Download d'un dossier en ftp

par guess » 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()?

Re: Download d'un dossier en ftp

par Dr@ke » 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

Re: Download d'un dossier en ftp

par guess » 06 avr. 2010, 17:26

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

même chose avec çà....

Re: Download d'un dossier en ftp

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