Pb Upload d'images

Domi_94
Invité n'ayant pas de compte PHPfrance

13 nov. 2007, 11:24

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

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

13 nov. 2007, 11:27

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

Domi_94
Invité n'ayant pas de compte PHPfrance

13 nov. 2007, 11:32

Tout est à refaire alors ??

ViPHP
fab
ViPHP | 2657 Messages

13 nov. 2007, 11:42

oui
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Domi_94
Invité n'ayant pas de compte PHPfrance

13 nov. 2007, 12:19

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

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

13 nov. 2007, 12:43

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