Page 1 sur 1

Pb Upload d'images

Posté : 13 nov. 2007, 11:24
par Domi_94
Bonjour, à tous,
J'ai fais un script tout simple d'upload de fichier dont voici le détail :

FORMULAIRE :

Code : Tout sélectionner

<form method="post" action="valid.php" enctype="multipart/form-data"> <input type="file" name="photo"><br> <input type="submit" value=" Valider "> </form>
SCRIPT D'UPLOAD :
<?
$ftp_server ="ftp.monsite.com";
$ftp_user_name="monsite.com";
$ftp_user_pass="monpwd";
$source_file=$photo;
$destination_file="\www\images\blablabla.gif";
// Création de la connexion
$conn_id = ftp_connect("$ftp_server");
// Authentification avec nom de compte et 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 à $ftp_server avec $ftp_user_name";
die;
} else {
echo "Connecté à $ftp_server, avec $ftp_user_name";
}
// Téléchargement d'un fichier.
$upload = ftp_put($conn_id, "$destination_file", "$source_file", FTP_BINARY);
// Vérification de téléchargement
if (!$upload) {
echo "Le téléchargement Ftp a échoué!";
} else {
echo "Téléchargement de $source_file sur $ftp_server en $destination_file";
}
// Fermeture de la connexion FTP.
ftp_quit($conn_id);
?>
MESSAGE D'ERREUR APRES VALIDATION :
Connecté à ftp.monsite.com, avec monsite.com
Warning: ftp_put() [function.ftp-put]: PORT command successful in /users/userxxxx/sites/monsite.com/ftp/valid_membre.php on line 24
Le téléchargement Ftp a échoué !
La ligne 24 est celle-ci :
$upload = ftp_put($conn_id, "$destination_file", "$source_file", FTP_BINARY);
Voyez-vous le problème svp ?

-------------------
Merci d'avance

Posté : 13 nov. 2007, 11:27
par Ryle
Bonjour,

La fonction FTP de PHP permet de se connecter à un Serveur FTP depuis le serveur ou se trouve ton script et nullement d'uploader des fichiers depuis le poste de l'utilisateur vers ton serveur :)

Pour récupérer les fichiers envoyés via ton formulaire, il faut que tu utilises l'objet $_FILES et les fonctions associées à l'upload HTTP comme move_uploaded_file() pour récupérer le fichier temporaire qui a été uploader et le stocker sur ton serveur ;)

Posté : 13 nov. 2007, 11:32
par Domi_94
Tout est à refaire alors ??

Posté : 13 nov. 2007, 11:42
par fab
oui

Posté : 13 nov. 2007, 12:19
par Domi_94
Voici mon script d'upLoad :
<?php 
if (!isset($_POST["submitFile"]) || !is_uploaded_file($_FILES["aFile"]["tmp_name"])) exit();
$ftp_server ="ftp.monsite.com";
$ftp_user_name="monsite.com";
$ftp_user_pass="monpwd";
$destination_file=$_FILES['aFile']['name']; 
$source_file=$_FILES['aFile']['tmp_name']; 
// Mise en place d'une connexion basique 
$conn_id = ftp_connect($ftp_server); 
// Identification avec un nom d'utilisateur et un mot de passe 
echo "<br>Tentative de connexion au serveur $ftp_server pour l'utilisateur $ftp_user_name..."; 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
// Vérification de la connexion 
if ((!$conn_id) || (!$login_result)) { 
        echo "<br>La connexion FTP a échoué !"; 
        exit(); 
    } else { 
        echo "<br>Connexion effectuée..."; 
    } 
// Chargement d'un fichier 
echo "<br>Chargement de $source_file vers $ftp_server en tant que $destination_file..."; 
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 
// Vérification du status du chargement 
if (!$upload) { 
        echo "<br>Le chargement FTP a échoué!"; 
    } else { 
        echo "<br>Le chargement FTP a réussi!";         
    } 
    // Fermeture du flux FTP 
ftp_quit($conn_id);               
?><
Pour le teste j'essaie d'uploader une image de 75 octets.
Après avoir valider mon formulaire et 2 bonnes minutes d'attente, j'obtiens encore le message d'erreur
Tentative de connexion au serveur ftp.monsite.com pour l'utilisateur monsite.com...
Connexion effectuée...
Chargement de /users/userxxxx/tmp/php0rr96e vers ftp.monsite.com en tant que fleche.gif...
Warning: ftp_put() [function.ftp-put]: PORT command successful in /users/userxxxx/sites/monsite.com/ftp/valid.php on line 27
Le chargement FTP a échoué!
Et en regardant via Filezilla sur la racine de mon site, j'ai bien l'image fleche.gif mais qui fait 0 octet !

Pourquoi ?
Merci

Posté : 13 nov. 2007, 12:43
par Ryle
Il ne faut PAS utiliser les fonction FTP pour un transfert HTTP d'un utilisateur vers ton serveur...... donc partout où tu vois écris "ftp" dans ton code, tu peux supprimer :)

Tu n'as pas utilisé la fonction move_uploaded_file(), du coup le fichier qui a été uploadé et stocké de manière temporaire sur le serveur n'est pas copier dans tes dossier et est supprimé.

Le fichier vide que tu trouves correspond sans doute à la tentative de php de se connecter en FTP de ton serveur vers ton serveur pour uploader un fichier qu'il ne trouve pas.

Regarde bien la documentation et les exemples de move_uploaded_file() :wink: