dossier source pour chargement

amn
Petit nouveau ! | 4 Messages

21 août 2007, 11:23

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); 
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 août 2007, 11:34

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
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 2291 Messages

21 août 2007, 11:45

Ceci ne fonctionnerais t'il pas :?:
destination_file="aleas/envoi.txt";  <-- le chemin du dossier aleas -->
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

amn
Petit nouveau ! | 4 Messages

22 août 2007, 10:51

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 août 2007, 11:19

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(), ...)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
AB
ViPHP | 5818 Messages

22 août 2007, 14:37

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 août 2007, 14:49

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 août 2007, 14:52

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
AB
ViPHP | 5818 Messages

22 août 2007, 15:17

: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