JOHN91270
Messages postés1Date d'inscriptionlundi 18 avril 2011StatutMembreDernière intervention21 janvier 2013 21 janv. 2013 à 05:09
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
valneandre
Messages postés35Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention18 septembre 2009 22 mai 2008 à 09:25
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":
<!-- 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; // */
}
?>
<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) . '
theosphile
Messages postés1Date d'inscriptionmercredi 26 février 2003StatutMembreDernière intervention22 avril 2008 22 avril 2008 à 10:10
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.
Nabouw
Messages postés1Date d'inscriptionlundi 11 février 2008StatutMembreDernière intervention12 février 2008 12 févr. 2008 à 16:51
Chouette, ce dont j'avais besoin !
Merci
TestOunet_0
Messages postés10Date d'inscriptionjeudi 26 octobre 2006StatutMembreDernière intervention23 novembre 2007 23 nov. 2007 à 11:48
Pour en revenir à la remarque =>
"Warning: opendir(C:\temp\test\) [function.opendir]: failed to open dir: No such file or directory in new_rep.php on line 24" indique que le script ne peut pas lire les dossiers qui ne se trouvent pas dans l'arboressance du serveur."
En effet il faut que les dossier se trouvent sur l'arborescence du serveur. Pour les personnes débutantes cela ne signifie pas forcément que les dossiers doivent être sur le même pc, mais par exemple sur un autre pc du réseau local, en effet il suffit de "mapper" le disque dur d'e l'ordinateur où se trouvent les dossiers et le déclarer comme lecteur réseau au niveau de ton pc d'où tu execute le scritp. en gros tu lui atribue par exemple la lettre Z: Et la on reste dans le domaine de "la même arborescence" et le script fonctione donc parfaitement. (c'est de cette manière que je l'utilise).
TestOunet_0
Messages postés10Date d'inscriptionjeudi 26 octobre 2006StatutMembreDernière intervention23 novembre 2007 15 nov. 2007 à 10:39
Bonjour,
J'ai enfin parachever l'intégralité de ce programme.
Je ne met pas le source pour le moment car ça ne correspondrait plus vraiment à l'intitulé au niveau de la recherche.
Ceci dit, je pense que je ne suis pas le seul à avoir une entreprise qui gère toutes ses éditions / factures par traitement informatique (pdf / flux d'impression) vers une société telle maileva.
Si une personne est un jour interressée par le processus d'automatisation / validation de l'envoi + le formatage des données pour répondre au cahier des charges de ladite société, je serais heureux de vous le communiquer.
Cordialement
TestOunet_0
Messages postés10Date d'inscriptionjeudi 26 octobre 2006StatutMembreDernière intervention23 novembre 2007 24 sept. 2007 à 14:12
Bonjour à tous, désolé au boulot je gère de multiple choses dont le réseau, je n'ai donc que peu de temps aà consacrer à la programmation.
J'ai lu vos commentaires, et bien évidement toutes les critiques sont les bienvenues.
au niveau programmation je ne suis vraiment pas très calé, mes codes sont en général assez lourds et peu optimisés :s
Le fait qu'il soit "à sens unique" n'est pas choquant je trouve, je n'ai pas le temps de faire des codes qui répondront aux attentes de tout le monde, ce que j'ai mis à disposition est uniquement la source qui m'est utile au travail.
En effet, tout un système d'archivage de pdf est mis en oeuvre, dans une page web, je fais un listing des pdf présents dans un dossier (en local), une personne vérifie ceux qu'ils faut envoyer, les coche, et valide son choix. Les .pdf en question sont alors envoyés directement sur le ftp distant. Le but de ce code est une "Automatisation", dans le cadre d'utilisateurs "lambda" n'ayant aucune connaissance en informatique, on ne peu se permettre de leur demander d'installer un client ftp pour uploader en "glissant" vers le ftp distant. Ou alors la personne qui réussira je lui achèterais des cerises ^^
Le but est de simplifier le tout à ce même utilisateur, d'où la nécessité de passer par une interface web.
L'utilisateur ouvre l'intranet, clique sur l'icône concernée "xxxXXxxx" et l'ammène vers le formulaire lui demandant quels fichiers sont à envoyer ou non, ceux cochés étant envoyés et les autres étant déplacés puis archivés.
De nombreuses déclinaisons peuvent être crées comme une automatisation totale.
Pour répondre à Western et Orlin, je ne connais pas trop les tenants, règles et aboutissants du php, mais je sais que ce code marche, et que je peux lister n'importe quel contenu de dossier en local, sur un pc du réseau, pour ensuite l'envoyer sur un ftp complètement indépendant ( Ovh, Maileva ....).
Hmmm, le fait que cela ne marche qu'en local chez vous, je ne sais pas trop, je vais essayer de refouiner un peu même si ça date.
Voila, en espérant avoir répondu le mieux possible à vos questions.
Pour les questions réellement techniques, je sèche un peu, je programme très très peu en php :(
syllebreton
Messages postés66Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention28 décembre 2010 22 sept. 2007 à 12:14
Tu le lance sur ton serveur comme une bête page internet...
V4mp
Messages postés21Date d'inscriptionsamedi 22 septembre 2007StatutMembreDernière intervention30 septembre 2007 22 sept. 2007 à 11:28
Moi je trouve ton programme bien fait ^^', mais comment le lance tu ? tu utilise un programme ou php.exe ?
syllebreton
Messages postés66Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention28 décembre 2010 26 août 2007 à 19:50
En php je ne pense pas que sa puisse se faire mais avec un client ftp je suis absolument sur. De plus la manip' n'est vraiment pas difficile.
>> Filezilla est un très bon logiciel ftp par exemple
western3021
Messages postés4Date d'inscriptiondimanche 22 juin 2003StatutMembreDernière intervention27 octobre 2008 25 août 2007 à 20:56
bien le bonsoir,
oui, disons que je cherche, quant à moi, un script permettant de transférer un fichier présent sur le disque dur sans qu'il soit nécessairement présent sur un serveur web, et là j'ai quelques doutes quant à cette possibilité sous php. Le script de mes rêves permettrait par exemple à un néophyte ne disposant pas d'un seveur web local de mettre à jour des fichiers à la voléee sur un ftp.
++
Benjamin
syllebreton
Messages postés66Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention28 décembre 2010 18 août 2007 à 18:49
Bonjour
Pour répondre a western3021 & à orlin :
On peut tout à fait utiliser se genre de script pour faire une sauvegarde depuis votre serveur web vers un serveur FTP.
L'erreur : "Warning: opendir(C:\temp\test\) [function.opendir]: failed to open dir: No such file or directory in new_rep.php on line 24" indique que le script ne peut pas lire les dossiers qui ne se trouvent pas dans l'arboressance du serveur.
J'espere avoir bien répondu à la question ?
Pour TestOunet_0 :
Je te conseillerai de faire une petite fonction qui contiendrai le code.
Par exemple :
function sauvegarde ($ftp_server, $ftp_user_name, $ftp_user_pass, $rep);
Sa deviendrai plus simple à intégrer dans un code. Un include 'page_de_la_fonction.php'; puis l'apel à la fonction. Ceci n'engage que moi mais c'est plus propre (un peu).
Sinon le code est bien fait, bonne gestion des erreurs qui pourrait être améliorée avec l'utilisation de or die('mon message');
exemple : $conn_id = ftp_connect("$ftp_server") or die('Impossible de se connecter au serveur '.$serveur);
Bon code !
cs_orlin
Messages postés1Date d'inscriptionjeudi 8 juin 2006StatutMembreDernière intervention 7 août 2007 7 août 2007 à 12:22
Bonjour
Pour moi le code ne marche qu'en local et pour cause comme le dit western3021 :
"Il me semblait que les fonctions php permettait de lister, par exemple, des dossiers et/ou fichiers situés sur le serveur web"
western3021
Messages postés4Date d'inscriptiondimanche 22 juin 2003StatutMembreDernière intervention27 octobre 2008 6 août 2007 à 13:13
Bien le bonjour,
est-ce moi qui n'ai rien compris ou bien ? Il me semblait que les fonctions php permettait de lister, par exemple, des dossiers et/ou fichiers situés sur le serveur web, mais aucunement sur le disque local, quand bien même on indiquerait l'emplacement dans le script ? L'erreur retournée au moment du test du script semble le confirmer : "Warning: opendir(C:\temp\test\) [function.opendir]: failed to open dir: No such file or directory in new_rep.php on line 24"
Merci de m'éclairer ;-) (d'autant que je recherche absolument ce genre de script)
Benjamin
Garra y Figura
Messages postés9Date d'inscriptiondimanche 20 mai 2007StatutMembreDernière intervention 2 mars 2021 24 juil. 2007 à 15:00
Bonjour
Je suis tout à fait d'accord avec david33470 car tout code est utile!! L'evidence que je suis en train de dire ici est aussi stupide que le mail de QISBUG
david33470
Messages postés5Date d'inscriptionmardi 17 août 2004StatutMembreDernière intervention23 juillet 2007 23 juil. 2007 à 08:54
Bonjour,
Pour répondre a QISBUG, moi je suis développeur logiciel et non développeur web, je m'attaque occasionnellement au web et loin d'être un expert en langage PHP, je trouve bien au contraire ce code très simple et très utile. En effet on peut lui trouver plusieurs applicatif dont entre autre pour un particulier permettre a ses amis d'envoyer leurs photos simplement vers son blog et par exemple pour une entreprise de permettre a ses collaborateur itinérant d'envoyer des fichiers (rapport, note de frais, ...) sur le serveur ftp ou web de l'entreprise. Ce sont deux des nombreuse application possible de ce code (en y apportant certes quelque modification comme la suggérer DiGHAN par exemple).
Tu dis également qu'il est a usage unique, je ne comprend vraiment pas pourquoi, il te suffit de rajouter un bouton de sélection de répertoire et le tour et joué. tu envoi sur le ftp dans un répertoire en fonction du login de ton utilisateur et hop rien de plus a modifier pour qu'il corresponde a tous le monde.
Pour finir tu dis qu'il ne te dit pas ou mettre le code, moi je dirais que la c'est le comble du comble! Tu ne veux pas nom plus qu'on fasse tes ou ton site(s) à ta place! Quand on parle de code pour gérer les session utilisateur ou autre, je veux bien a la limite que ça puisse être difficile a placer! Mais la! Tu ne peux le mettre qu'au moment ou tu veux envoyer les fichiers vers le fTP.
Je ne comprends vraiment pas tes remarques qui sont, selon moi, sans grands intérêts. Nous sommes ici sur un lieu d'échange et de partage, d'information et d'expérience, afin de progresser et d'aider à progresser, toi tu te permets de faire un commentaire sans intérêt qui ne participe absolument pas à la construction de notre progression.
Pour finir, tu te permet "d'essayer de nous expliquer " comment tu fait toi! J'utilise pourtant des serveurs FTP tous les jours, mais je n'ai absolument rien compris à la façon dont tu procèdes. Tu balance le mot "glissez déposer" comme ceci sans dire ni pourquoi ni comment. Tu ne parles pas de client FTP, ni de php, ni d'aucun langage ou logiciel que ce soit. Dans le domaine du compliqué, tu t'en sort plutôt pas mal je trouve!
Bon enfin voila, désolé a tous d'avoir épilogué la dessus mais nous somme la pour apporter des réponse constructive et utile, afin de participer aux échange de compétences, alors dés réponses comme celle-ci me révolte un peut.
Pour revenir au code de testounet_0, car c'est pour cela que nous somme la, moi je le trouve très utile, et j'en aurai peut être l'utilité bientôt.
Bonne continuation.
David
cs_qisbug
Messages postés19Date d'inscriptionmardi 18 avril 2006StatutMembreDernière intervention14 février 2008 23 juil. 2007 à 07:57
Bonjour
je ne vois pas du tout l'intérêt de ce code
1) il est compliqué
2) tu ne dis pas où le placer
3) il est à utilisation unique
or moi je dispose de plusieurs sites distants accessibles par FTP. Un simple "glisser-déposer" est ultra-facile dans un sens comme dans l'autre, et les personnes auxquelles j'ai expliqué le maniement ont compris tout de suite. Pourquoi donc faire compliqué quand on peut faire simple ?
Mais si ton but était de faire un exercice ... pourquoi pas !
Bonne continuation !
BP
DiGhan
Messages postés239Date d'inscriptionsamedi 21 février 2004StatutMembreDernière intervention 3 juin 20101 19 juil. 2007 à 17:25
Salut,
comme il est dit dans la description, cette source peut être utile pour présenter le fonctionnement des fonctions FTP de PHP. Au niveau du code :
1) Quand utiliser les apostrophes (') ou les guillemets (") ?
> les guillemets interprètent les variables ainsi que les caractères d'espacement, exemple :
<?php
$nom = 'yvan';
echo "mon nom est $nom.\n"; // affichage "mon nom est yvan." (avec un retour à la ligne)
echo 'mon nom est $nom.\n'; // affichage "mon nom est $nom.\n"
?>
2) Les paramètres d'une fonction doivent uniquement contenir les variables sans guillemets. De cette façon, ftp_connect("$ftp_server") devient ftp_connect($ftp_server).
3) la vérification du fichier envoyé doit se faire dans la boucle :
21 janv. 2013 à 05:09
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
22 mai 2008 à 09:25
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 . '
' . '
' . '
' . '
' ;
}
?>
22 avril 2008 à 10:10
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.
12 févr. 2008 à 16:51
Merci
23 nov. 2007 à 11:48
"Warning: opendir(C:\temp\test\) [function.opendir]: failed to open dir: No such file or directory in new_rep.php on line 24" indique que le script ne peut pas lire les dossiers qui ne se trouvent pas dans l'arboressance du serveur."
En effet il faut que les dossier se trouvent sur l'arborescence du serveur. Pour les personnes débutantes cela ne signifie pas forcément que les dossiers doivent être sur le même pc, mais par exemple sur un autre pc du réseau local, en effet il suffit de "mapper" le disque dur d'e l'ordinateur où se trouvent les dossiers et le déclarer comme lecteur réseau au niveau de ton pc d'où tu execute le scritp. en gros tu lui atribue par exemple la lettre Z: Et la on reste dans le domaine de "la même arborescence" et le script fonctione donc parfaitement. (c'est de cette manière que je l'utilise).
15 nov. 2007 à 10:39
J'ai enfin parachever l'intégralité de ce programme.
Je ne met pas le source pour le moment car ça ne correspondrait plus vraiment à l'intitulé au niveau de la recherche.
Ceci dit, je pense que je ne suis pas le seul à avoir une entreprise qui gère toutes ses éditions / factures par traitement informatique (pdf / flux d'impression) vers une société telle maileva.
Si une personne est un jour interressée par le processus d'automatisation / validation de l'envoi + le formatage des données pour répondre au cahier des charges de ladite société, je serais heureux de vous le communiquer.
Cordialement
24 sept. 2007 à 14:12
J'ai lu vos commentaires, et bien évidement toutes les critiques sont les bienvenues.
au niveau programmation je ne suis vraiment pas très calé, mes codes sont en général assez lourds et peu optimisés :s
Le fait qu'il soit "à sens unique" n'est pas choquant je trouve, je n'ai pas le temps de faire des codes qui répondront aux attentes de tout le monde, ce que j'ai mis à disposition est uniquement la source qui m'est utile au travail.
En effet, tout un système d'archivage de pdf est mis en oeuvre, dans une page web, je fais un listing des pdf présents dans un dossier (en local), une personne vérifie ceux qu'ils faut envoyer, les coche, et valide son choix. Les .pdf en question sont alors envoyés directement sur le ftp distant. Le but de ce code est une "Automatisation", dans le cadre d'utilisateurs "lambda" n'ayant aucune connaissance en informatique, on ne peu se permettre de leur demander d'installer un client ftp pour uploader en "glissant" vers le ftp distant. Ou alors la personne qui réussira je lui achèterais des cerises ^^
Le but est de simplifier le tout à ce même utilisateur, d'où la nécessité de passer par une interface web.
L'utilisateur ouvre l'intranet, clique sur l'icône concernée "xxxXXxxx" et l'ammène vers le formulaire lui demandant quels fichiers sont à envoyer ou non, ceux cochés étant envoyés et les autres étant déplacés puis archivés.
De nombreuses déclinaisons peuvent être crées comme une automatisation totale.
Pour répondre à Western et Orlin, je ne connais pas trop les tenants, règles et aboutissants du php, mais je sais que ce code marche, et que je peux lister n'importe quel contenu de dossier en local, sur un pc du réseau, pour ensuite l'envoyer sur un ftp complètement indépendant ( Ovh, Maileva ....).
Hmmm, le fait que cela ne marche qu'en local chez vous, je ne sais pas trop, je vais essayer de refouiner un peu même si ça date.
Voila, en espérant avoir répondu le mieux possible à vos questions.
Pour les questions réellement techniques, je sèche un peu, je programme très très peu en php :(
22 sept. 2007 à 12:14
22 sept. 2007 à 11:28
26 août 2007 à 19:50
>> Filezilla est un très bon logiciel ftp par exemple
25 août 2007 à 20:56
oui, disons que je cherche, quant à moi, un script permettant de transférer un fichier présent sur le disque dur sans qu'il soit nécessairement présent sur un serveur web, et là j'ai quelques doutes quant à cette possibilité sous php. Le script de mes rêves permettrait par exemple à un néophyte ne disposant pas d'un seveur web local de mettre à jour des fichiers à la voléee sur un ftp.
++
Benjamin
18 août 2007 à 18:49
Pour répondre a western3021 & à orlin :
On peut tout à fait utiliser se genre de script pour faire une sauvegarde depuis votre serveur web vers un serveur FTP.
L'erreur : "Warning: opendir(C:\temp\test\) [function.opendir]: failed to open dir: No such file or directory in new_rep.php on line 24" indique que le script ne peut pas lire les dossiers qui ne se trouvent pas dans l'arboressance du serveur.
J'espere avoir bien répondu à la question ?
Pour TestOunet_0 :
Je te conseillerai de faire une petite fonction qui contiendrai le code.
Par exemple :
function sauvegarde ($ftp_server, $ftp_user_name, $ftp_user_pass, $rep);
Sa deviendrai plus simple à intégrer dans un code. Un include 'page_de_la_fonction.php'; puis l'apel à la fonction. Ceci n'engage que moi mais c'est plus propre (un peu).
Sinon le code est bien fait, bonne gestion des erreurs qui pourrait être améliorée avec l'utilisation de or die('mon message');
exemple : $conn_id = ftp_connect("$ftp_server") or die('Impossible de se connecter au serveur '.$serveur);
Bon code !
7 août 2007 à 12:22
Pour moi le code ne marche qu'en local et pour cause comme le dit western3021 :
"Il me semblait que les fonctions php permettait de lister, par exemple, des dossiers et/ou fichiers situés sur le serveur web"
6 août 2007 à 13:13
est-ce moi qui n'ai rien compris ou bien ? Il me semblait que les fonctions php permettait de lister, par exemple, des dossiers et/ou fichiers situés sur le serveur web, mais aucunement sur le disque local, quand bien même on indiquerait l'emplacement dans le script ? L'erreur retournée au moment du test du script semble le confirmer : "Warning: opendir(C:\temp\test\) [function.opendir]: failed to open dir: No such file or directory in new_rep.php on line 24"
Merci de m'éclairer ;-) (d'autant que je recherche absolument ce genre de script)
Benjamin
24 juil. 2007 à 15:00
Je suis tout à fait d'accord avec david33470 car tout code est utile!! L'evidence que je suis en train de dire ici est aussi stupide que le mail de QISBUG
23 juil. 2007 à 08:54
Pour répondre a QISBUG, moi je suis développeur logiciel et non développeur web, je m'attaque occasionnellement au web et loin d'être un expert en langage PHP, je trouve bien au contraire ce code très simple et très utile. En effet on peut lui trouver plusieurs applicatif dont entre autre pour un particulier permettre a ses amis d'envoyer leurs photos simplement vers son blog et par exemple pour une entreprise de permettre a ses collaborateur itinérant d'envoyer des fichiers (rapport, note de frais, ...) sur le serveur ftp ou web de l'entreprise. Ce sont deux des nombreuse application possible de ce code (en y apportant certes quelque modification comme la suggérer DiGHAN par exemple).
Tu dis également qu'il est a usage unique, je ne comprend vraiment pas pourquoi, il te suffit de rajouter un bouton de sélection de répertoire et le tour et joué. tu envoi sur le ftp dans un répertoire en fonction du login de ton utilisateur et hop rien de plus a modifier pour qu'il corresponde a tous le monde.
Pour finir tu dis qu'il ne te dit pas ou mettre le code, moi je dirais que la c'est le comble du comble! Tu ne veux pas nom plus qu'on fasse tes ou ton site(s) à ta place! Quand on parle de code pour gérer les session utilisateur ou autre, je veux bien a la limite que ça puisse être difficile a placer! Mais la! Tu ne peux le mettre qu'au moment ou tu veux envoyer les fichiers vers le fTP.
Je ne comprends vraiment pas tes remarques qui sont, selon moi, sans grands intérêts. Nous sommes ici sur un lieu d'échange et de partage, d'information et d'expérience, afin de progresser et d'aider à progresser, toi tu te permets de faire un commentaire sans intérêt qui ne participe absolument pas à la construction de notre progression.
Pour finir, tu te permet "d'essayer de nous expliquer " comment tu fait toi! J'utilise pourtant des serveurs FTP tous les jours, mais je n'ai absolument rien compris à la façon dont tu procèdes. Tu balance le mot "glissez déposer" comme ceci sans dire ni pourquoi ni comment. Tu ne parles pas de client FTP, ni de php, ni d'aucun langage ou logiciel que ce soit. Dans le domaine du compliqué, tu t'en sort plutôt pas mal je trouve!
Bon enfin voila, désolé a tous d'avoir épilogué la dessus mais nous somme la pour apporter des réponse constructive et utile, afin de participer aux échange de compétences, alors dés réponses comme celle-ci me révolte un peut.
Pour revenir au code de testounet_0, car c'est pour cela que nous somme la, moi je le trouve très utile, et j'en aurai peut être l'utilité bientôt.
Bonne continuation.
David
23 juil. 2007 à 07:57
je ne vois pas du tout l'intérêt de ce code
1) il est compliqué
2) tu ne dis pas où le placer
3) il est à utilisation unique
or moi je dispose de plusieurs sites distants accessibles par FTP. Un simple "glisser-déposer" est ultra-facile dans un sens comme dans l'autre, et les personnes auxquelles j'ai expliqué le maniement ont compris tout de suite. Pourquoi donc faire compliqué quand on peut faire simple ?
Mais si ton but était de faire un exercice ... pourquoi pas !
Bonne continuation !
BP
19 juil. 2007 à 17:25
comme il est dit dans la description, cette source peut être utile pour présenter le fonctionnement des fonctions FTP de PHP. Au niveau du code :
1) Quand utiliser les apostrophes (') ou les guillemets (") ?
> les guillemets interprètent les variables ainsi que les caractères d'espacement, exemple :
<?php
$nom = 'yvan';
echo "mon nom est $nom.\n"; // affichage "mon nom est yvan." (avec un retour à la ligne)
echo 'mon nom est $nom.\n'; // affichage "mon nom est $nom.\n"
?>
2) Les paramètres d'une fonction doivent uniquement contenir les variables sans guillemets. De cette façon, ftp_connect("$ftp_server") devient ftp_connect($ftp_server).
3) la vérification du fichier envoyé doit se faire dans la boucle :
<?php
$dst_dir = '/www/votre/racine/web/';
while( ($f = readdir($dir)) !== FALSE )
{
if( is_file($rep.$f) )
{
$source_file = $rep . $f;
$destination_file = $dst_dir . $f;
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
echo $upload ? 'fichier envoyé' : 'envoi fichier impossible';
}
}
?>
4) Il est également conseillé de vérifier les types des valeurs de retour, voir opérateur ===, !==