ENVOI CONTENU D'UN DOSSIER VERS FTP

Signaler
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
-
Messages postés
1
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
21 janvier 2013
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43500-envoi-contenu-d-un-dossier-vers-ftp

Messages postés
1
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
21 janvier 2013

Bonjour,

Je suis très intéressé par ce code mais je ne trouve pas mon bonheur!
Comme vous le savez il n'est pas possible de sélectionner plusieurs fichiers en PHP et donc de les d'uploader en FTP.

Je voudrais donc pouvoir uploader le contenu d'un répertoire exemple: http://monsite/temp sur un FTP, est ce possible ? auriez vous un bout de code ?

Merci
Messages postés
35
Date d'inscription
mardi 7 novembre 2006
Statut
Membre
Dernière intervention
18 septembre 2009

Bonjour
J'ai apprécié ce code, qui m'a permis de compléter mes connaissances sur le sujet.
Je me suis permis de le modifier pour offrir à l'utilisateur le choix du serveur, du login, du mdp, du rép. d'origine (avec les limitations que vous verrez) et du rép de destination.
Le code ci-dessous fonctionne parfaitement sous IE7. Il bugge sous Firefox, parce que ce navigateur renvoie toujours le nom de base du fichier et non le chemin complet... Si quelqu'un a la solution !
Voici donc "ftpchoix.php":



<script>
window.resizeTo(screen.width,screen.height-26);
window.moveTo(0,-1);
</script>

<!-- DEBUT DES CHOSES SERIEUSES ! ! ! ! ! --->
<!-- ==================================== --->
<?php
function fetepe($serveur,$user,$mdp,$reporg,$repdest)
{
$x=0;
/* vérification des variables d'environnement
echo $serveur . ' ' . $user . ' ' . $mdp . ' ' . $reporg . ' ' . $repdest; */
$dir=opendir($reporg);
// création de la connection
$conid=ftp_connect("$serveur") or die("Impossible de se connecter à " . $serveur);
// authentification avec nom du compte et mdp
$login_result=ftp_login($conid,"$user","$mdp");
// vérification de la connexion
if ((!$conid) || (!$login_result))
{ die("La Connexion FTP a échoué !
"); }
else { echo "Connecté à $serveur, avec $user
"; }
// Listage du contenu du répertoire et upload
while($f=readdir($dir))
{ if (is_file($reporg . $f))
{ $x++;
$source_file=$reporg. $f;
$destination_file=$repdest.$f;
$resultat = ftp_put($conid,"$destination_file","$source_file",FTP_BINARY);
} /* else { echo $reporg . $f . '
';
echo $repdest . $f . '
'; } */
}
// Vérification du téléchargement
if(!$resultat)
{ echo "Le téléchargement a échoué
";
echo "Si vous avez eu le message 'No such directory or file', ou 'not a valid Directory resource', 2 possibilités :
";
echo "1) Soit vous vous êtes vraiment trompé de dossier, avez commis une faute de frappe ou autre
";
echo "2) Soit vous utilisez Mozilla Firefox, qui ne sait pas conserver le chemin complet réel d'un dossier, et ne
";
echo "retourne que le nom du fichier, sans son chemin, qu'on lui demande 'dirname', 'basename', ou même 'realpath'
";
echo "Essayez avec un navigateur sérieux, comme IE7, et vous verrez, tout rentrera dans l'ordre !
";
}
else { echo "Téléchargement de $reporg sur $serveur/$user/$repdest/ réussi
"; }
// Fermeture de la connexion
ftp_quit($conid);
return $x; // */
}
?>

<form action="#ftp" method="post" name="feuteupeu">
<label> Serveur ? </label>

<label> Login ? </label>

<label> Mot de passe ? </label>

<label> Dossier à charger ? (Choisir un fichier au hasard dans le dossier pour initialiser le chemin) </label>

<label> Vers quel dossier distant ? </label>




</form>



<?php
if (isset($_POST['file'])) // si l'init variables par l'u se déroule bien
{
$ser=$_POST['serveur'];
$use=$_POST['login'];
$mdp=$_POST['mdp'];
$rep=$_POST['file']; // nous avons récupéré le répertoire d'origine (du moins sous IE7)
$nom=basename($_POST['file']); // le nom du fichier seul... que l'on va soustraire au nom complet
$a=strlen($nom); $b=strlen($_POST['file']); $c=$b-$a; // petite gymnastique nécessaire pour
$rep=substr($rep,0,$c); // remettre l'antislash à la fin du chemin
$dst=$_POST['dest'];
echo 'Nous nous connectons sur le serveur : ' . $ser . '
';
echo 'En tant qu\'utilisateur : ' . $use . '
';
echo 'Avec le mot de passe : ' . $mdp . '
';
echo 'Pour uploader le dossier : ' . $rep . '
';
echo 'Vers le dossier du serveur : ' . $dst . '
';
echo 'En mode binaire par défaut.
';
echo 'Le nombre de fichiers uploadé est de : ' . fetepe($ser,$use,$mdp,$rep,$dst) . '

';
// echo '
' . realpath($_POST['file']) . '
' . $_POST['file'] . '
' . $nom . '
' . $rep . '
' . '
' . '
' . '
' ;
}
?>
Messages postés
1
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
22 avril 2008

Bonjour,

J'ai tester une connexion réseau sur un Xp, 2000, ou 2003, et à chaque fois il me précise Unable to open Z:\dossier\.

Donc, je me demande si vraiment on peut sélectionner un répertoire locale et uploader tout ceci. Cela me semble étonnant.

Enfin, je vais bien revérifier ce code, dont je remercie tout de même l'auteur pour sa mise en ligne.
Messages postés
1
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
12 février 2008

Chouette, ce dont j'avais besoin !

Merci
Afficher les 18 commentaires