Page 1 sur 1

dossier source pour chargement

Posté : 21 août 2007, 11:23
par amn
Debutant en php, je veux telecharger un fichier à un serveur FTP , j'ai réussi mais le probleme est que le fichier source doit se trouver dans le dossier APACHE (aleas) ou se trouve le script , alors qu'en telechargement l'emplacement du fichier source est libre. Merci

Code : Tout sélectionner

<form action="envfichier.php" method="POST" enctype="multipart/form-data" name="form1"> <div align="right"> <p> <input type='hidden' name='taille_maxe' value=10000> <input type="file" name="fich" > </p> <p> <input type="reset" name="efface" value="مسح"> <input type="submit" name="envoi" value="ارسال"> </p> </div> </form>
"envfichier.php":
<?php
// Test de chargement d'un fichier dans le meme repertoire que le script vers le serveur FTP
// Mise en place d'une connexion basique
error_reporting(E_ALL ^ E_NOTICE);
$ftp_server="ftp.oooo-vvv.dz";
$ftp_user_name="ccccccc";
$ftp_user_pass="22222222";
$conn_id = ftp_connect($ftp_server); 

// Identification avec un nom d'utilisateur et un mot de passe
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

// Vérification de la connexion
if ((!$conn_id) || (!$login_result)) { 
        echo "La connexion FTP a échoué !";
        echo "Tentative de connexion au serveur $ftp_server pour l'utilisateur $ftp_user_name"; 
        exit; 
    } else {
        echo "Connexion au serveur $ftp_server, pour l'utilisateur $ftp_user_name <br \>"; 
    }
$destination_file="envoi.txt";
$table_file=$_FILES['fich'];
$source_file=$table_file['name'];
// Chargement d'un fichier
$upload = ftp_put($conn_id,$destination_file , $source_file, FTP_BINARY);
 // Vérification du status du chargement
if (!$upload) { 
        echo "Le chargement FTP a échoué!";
    } else {
        echo "Chargement de $source_file vers $ftp_server en tant que $destination_file";
    }

// Fermeture du flux FTP
ftp_close($conn_id); 
?>

Posté : 21 août 2007, 11:34
par Ryle
Modération :
amn, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Re: dossier source pour chargement

Posté : 21 août 2007, 11:45
par dunbar
Ceci ne fonctionnerais t'il pas :?:
destination_file="aleas/envoi.txt";  <-- le chemin du dossier aleas -->

Posté : 22 août 2007, 10:51
par amn
Merci pour votre reponse rapide mais le probleme est dans l'emplacement du fichier source à telecharger au serveur FTP, si je selectionne un emplacement autre que le dossier (chemin) ou se trouve le script le telechargement echouera.

Posté : 22 août 2007, 11:19
par Ryle
Rappel : le transfert ftp en php s'exécute sur le serveur. Il permet de se connecter depuis le serveur à un serveur FTP tiers afin d'y uploader (ou downloader) des fichiers. Il ne sert pas à uploader des fichiers depuis un poste client via un navigateur.

L'upload de fichier depuis un poste client vers le serveur se fait en HTTP en utilisant un formulaire (avec l'enctype adéquat), un input de type file, et côté php en utilisant la variable $_FILES et les fonctions d'upload associées (is_uploaded_file(), move_uploaded_file(), ...)

Posté : 22 août 2007, 14:37
par AB
Rappel : le transfert ftp en php s'exécute sur le serveur. Il permet de se connecter depuis le serveur à un serveur FTP tiers afin d'y uploader (ou downloader) des fichiers. Il ne sert pas à uploader des fichiers depuis un poste client via un navigateur.

L'upload de fichier depuis un poste client vers le serveur se fait en HTTP en utilisant un formulaire (avec l'enctype adéquat), un input de type file, et côté php en utilisant la variable $_FILES et les fonctions d'upload associées (is_uploaded_file(), move_uploaded_file(), ...)
:?: et à quoi servent les fonctions ftp_connect, ftp_login

Pour des raisons de commodité, j'utilise moi aussi le protocole http pour les CMS mais mes premiers scripts utilisaient une connexion ftp et fonctionnaient parfaitement. Je ne vois pas ce que tu veux dire.

Posté : 22 août 2007, 14:49
par zeus
Quand s'exécute le code PHP, tu te trouves sur le serveur.
Si tu n'as pas transféré le fichier du client vers le serveur (via un input type file) comment le fichier qui se trouve sur le client peut il avoir été transmis au serveur ?

les fonction ftp de php permettent au serveur sur lequel s'exécute le script PHP de se connecter à un serveur FTP distant.
Donc, soit tu as un serveur ftp sur chaque poste client qui utilise ton CMS, soit tu upload le fichier sur le serveur PHP avant de le transférer sur le serveur FTP ;)

Posté : 22 août 2007, 14:52
par Ryle
Ces fonctions te permettent de te connecter depuis le serveur php à une autre machine sur laquelle est installée un serveur ftp, pour transférer des fichiers entre les deux machines via le protocole ftp.

Tu ne peux pas, depuis le serveur php, te connecter sur la machine de l'utilisateur via ftp pour downloader (rappatrier du client vers le serveur) le fichier qu'il souhaite uploader, à moins que celui-ci ne soit équipé d'un serveur ftp et qu'il t'en ait donné les codes d'accès. Je suis assez curieux de savoir ce que faisait ton script basé sur ftp, mais je doute que ce fut de l'upload depuis le poste d'un visiteur lambda :)

Edit : flûte, grillé. Bon ben voilà, pas mieux que Zeus en fait :)

Posté : 22 août 2007, 15:17
par AB
:oops: oui heu bon c'étaient mes premiers scripts.
Je viens d'y refaire un tour. ça marchait mais ma connexion ftp ne servait effectivement strictement à rien :lol:

EDIT pour le téléchargement d'un fichier depuis un poste client rien de tel que l'excellent tuto http://www.phpfrance.com/tutoriaux/inde ... e-fichiers