lupucide Posté 16 Mars 2005 Posté 16 Mars 2005 Coucou, encore moi pour le thread chiant du jour Aujourd'hui, j'essaye la fonction FTP de PHP. Il s'agit de choisir une image grâce à une petit formulaire HTML : <form action="galerie.php" method="post" enctype="multipart/form-data"> <fieldset> <p><input type="file" name="img" size="30" /> <input type="submit" name="go" value="Envoyer" /></p> </fieldset></form> Puis d'envoyer le tout par FTP : if (isset($_POST['go'])) { if (empty($_FILES['img']['tmp_name'])) { $msg_form = '<p>Pas de fichier...</p>'; } else { $file = $_FILES['img']['tmp_name']; $size = filesize($file); if ($size > 400) { $msg_size = '<p>Fichier trop volumineux : arrêt !</p>'; } // Ouverture de la session FTP $conn_id = ftp_connect("monftp.com"); $login_result = ftp_login ($conn_id, "logtest", "passtest"); // Test if ((!$conn_id) || (!$login_result)) { $msg_open = "<p>La connexion a échouée.</p>"; die; } else { $msg_open = "<p>Connexion établie.</p>"; $dest = ftp_chdir($conn_id, 'media/'); $upload = ftp_nb_put($conn_id, $file, $dest, FTP_BINARY); if (!$upload) { $msg_upload = '<p>Upload OUT</p>'; die; } else { $msg_upload = '<p>Upload OK</p>'; } } // Fermeture de la session FTP $close = ftp_close($conn_id); if (!close) { $msg_close = '<p>La déconnexion a échoué.</p>'; die; } else { $msg_close = '<p>Déconnexion effectuée.</p>'; } }} Attention petit lapin, une ou plusieures erreurs se cachent dans le code ci-dessus, sauras-tu les retrouver ? En fait, je bute sur une page m'indiquant : Warning: ftp_nb_put(1) [function.ftp-nb-put]: failed to open stream: No such file or directory in f:\wamp\www\03\admin\galerie.php on line 29 C'est bon coco, je sais, tu n'aime pas le chemin que je te refile pour la source. La ligne 29 étant : $upload = ftp_nb_put($conn_id, $file, $dest, FTP_BINARY); Mais alors, comment faire ?
Anonymus Posté 16 Mars 2005 Posté 16 Mars 2005 Au lieu de : $dest = ftp_chdir($conn_id, 'media/'); Essaies : $dest = ftp_chdir($conn_id, 'media');
lupucide Posté 16 Mars 2005 Auteur Posté 16 Mars 2005 Je viens de tester : $dest = 'media';$upload = ftp_nb_put($conn_id, $file, $dest, FTP_BINARY); Et : $dest = 'media';$upload = ftp_nb_put($conn_id, $file, $dest.'/', FTP_BINARY); Ca ne fonctionne pas non plus. Merci d'avoir essayer.
lupucide Posté 16 Mars 2005 Auteur Posté 16 Mars 2005 Bon, je met ce script en stand by car il semblerait qu'il ne soit pas possible d'envoyer par FTP en fichier sélectionné avec avec un <input type="file" />. J'ai bien tenter de modifier un peu l'ensemble : if (isset($_POST['go'])) { if (empty($_FILES['img']['name'])) { $msg_form = '<p>Pas de fichier...</p>'; } else { $file = pathinfo($_FILES['img']['name']); // Ouverture de la session FTP $conn_id = ftp_connect("mondtp.com"); $login_result = ftp_login ($conn_id, "logtest", "passtest"); // Test if ((!$conn_id) || (!$login_result)) { $msg_open = "<p>La connexion a échouée.</p>"; die; } else { $msg_open = "<p>Connexion établie.</p>"; $dest = ftp_chdir($conn_id, 'media'); $upload = ftp_nb_put($conn_id, $dest.'/', $file['dirname'].'/'.$file['basename'], FTP_BINARY); if (!$upload) { $msg_upload = '<p>Upload OUT</p>'; die; } else { $msg_upload = '<p>Upload OK</p>'; } } // Fermeture de la session FTP $close = ftp_close($conn_id); if (!close) { $msg_close = '<p>La déconnexion a échoué.</p>'; die; } else { $msg_close = '<p>Déconnexion effectuée.</p>'; } }} Le script plante toujours sur ftp_nb_put en me déclarant le path comme étant ./Predator - Concrete Jungle.JPG. Je ne vois pas d'autre moyen d'indiquer correctement le chemin du fichier...
Anonymus Posté 16 Mars 2005 Posté 16 Mars 2005 Juste une question. Tu veux envoyer le tout où ? Sur le meme serveur que celui qui a le formulaire, ou un autre ? Si tu veux uploader un fichier de ton ordinateur à ton serveur, ce n'est pas cette fonction qu'il faut utiliser. Cette fonction est utile si tu veux envoyer un fichier à partir de ton serveur, vers un serveur ftp distant.
lupucide Posté 16 Mars 2005 Auteur Posté 16 Mars 2005 De mon serveur local sur un compte Free. Mon PC c'est comme mon frigo, j'aime bien y trouver à boire et manger
Anonymus Posté 17 Mars 2005 Posté 17 Mars 2005 et tu ne peux pas mettre le script sur le compte free ?
lupucide Posté 17 Mars 2005 Auteur Posté 17 Mars 2005 A la base il s'agissait juste d'un script d'upload d'images vers un serveur distant mais je suis rentré dans le jeu et me demande si un script complet type "ligne de commande" pour faire des actions FTP serait faisable. Si je bute sur une simple fonction de ce type ce serait un échec En attendant je me suis rabattu sur un simple upload via move_uploaded-file(), comme tu le préçise. En tout cas merci du coup de main. Ce thread n'est pas encore mort
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant