Upload

nairolf_88 Messages postés 11 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 8 mars 2006 - 6 oct. 2005 à 20:50
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 10 oct. 2005 à 08:54
bonjour à tous



je suis entrain de developper un script d'upload par ftp en php dont voici le code :



---BOF---



<?

if(isset($_POST["upload"])){

$fichier = $_FILES["fichier"]["name"];

$connect = ftp_connect("monserveur");

// Identification avec un nom d'utilisateur et un mot de passe

if(ftp_login($connect, "monlogin", "monpass")){

echo "connecté";

}

// Charge un fichier

if (ftp_put($connect, $fichier, $fichier, FTP_BINARY)){

echo "Le fichier '$fichier' a été envoyer avec succès !\n";

} else {

echo "Echec de l'envoie du fichier '$fichier' !\n";

}

}else{

echo "<form enctype='multipart/form-data' method='post' action=''>








</form>";

}

?>



---EOF---



La soumission de du formulaire se passe normalement et la connexion se passe correctement mais la fonction <ftp_put> ne passe pas et le message << Echec de l'envoie du fichier 'nomdefichier' ! >> est affiché



Je ne vois pas d'erreur de syntaxe, le compte ftp que j'utilise passe
avec mon client ftp et upload fonctionne parfaitement. Les attributs de
la racine du compte sont drwxr-sr-x est me semble plus que suffisant
pour l'execution du script.



merci de votre aide !



@++ nairolf

5 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 oct. 2005 à 09:51
Hello,



ahem, faudrait voir à relire la doc...en voici un extrait juste pour
ftp_put () (http://fr2.php.net/manual/en/function.ftp-fput.php) :



Example 1. ftp_fput() example




<?php



// open some file for reading

$file =  'somefile.txt';

$fp = fopen($file, 'r');



// set up basic connection

$conn_id = ftp_connect($ftp_server);



// login with username and password

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);



// try to upload $file

if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {

    echo "Successfully uploaded $file\n";

} else {

    echo "There was a problem while uploading $file\n";

}



// close the connection and the file handler

ftp_close($conn_id);

fclose($fp);



?>



Et surtout :

bool ftp_fput ( resource ftp_stream, string remote_file, resource handle, int mode [, int startpos] )



Je vois bien ta ressource ftp..., je vois bien la chaine représentant
le nom (et le chemin) du fichier à uploader sur le serveur ftp...par
contre, pour le 3ème paramètre, y a un problème. Tu passes une chaine
(la même que pour le 2ème paramètre, pas très logique...ça ne t'a pas
interloqué??), et la fonction attent une ressource fichier.

Comment obtenir une ressource fichier ?

$file_resource = fopen ($fichier, 'r');

par exemple.



fopen() ? hmmm...quel genre de fichier peut-on ouvrir avec un fopen(),
en php ? Et quel type de fichier passes tu à la fonction, avec ton
$_FILES['fichier']['name']...?



Je te laisse réflêchir à ça, et je te montre une autre fonction :

http://fr2.php.net/manual/en/function.ftp-get.php



bool ftp_get ( resource ftp_stream, string local_file, string remote_file, int mode [, int resumepos] )



Examples



Example 1. ftp_get() example




<?php



// define some variables

$local_file = 'local.zip';

$server_file = 'server.zip';



// set up basic connection

$conn_id = ftp_connect($ftp_server);



// login with username and password

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);



// try to download $server_file and save to $local_file

if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {

    echo "Successfully written to $local_file\n";

} else {

    echo "There was a problem\n";

}



// close the connection

ftp_close($conn_id);



?>





Voil&#224; voil&#224;...je pense t'avoir largement aiguill&#233; ;-)



0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 oct. 2005 à 09:54
Oups, me suis planté là. J'a cru que tu voulais utiliser ftp_fput pour uploader les données d'un fichier...



Mais bon, ton erreur est autre dans ce cas.





Une de tes 2 variables de nom n'est pas bonne...celle-ci contient le nom local du fichier. 



0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 oct. 2005 à 09:55
En plus me suis aussi trompé parce que j'ai pris ftp_get alors que je voulais ftp_fget lol...décidément. Désolé ;-)
0
nairolf_88 Messages postés 11 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 8 mars 2006
8 oct. 2005 à 21:39
Salut malalam,



Mes argument remote_file et local_file sont les meme car je
souhaiterais que le nom distant (sur ftp) de mon fichier soit le meme
que que le fichier envoyé par le visiteur.



La syntaxe de la fontion ftp_put étant :



bool ftp_put ( resource ftp_stream, string remote_file, string local_file, int mode [, int startpos] )

(cf: http://fr.php.net/ftp_put )



Je ne pense pas que ma maniére d'appeler cette fonction soit fause, dis moi si je me trompe ?



je vais essayer la fonction ftp_fput en utilisant le handle du fichier à envoyer, je vais voir si sa passe



@++ nairolf
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 oct. 2005 à 08:54
Affiche $fichier, je pense que tu as tout le chemin. Et que ce chemin n'est pas bon sur ton serveur ftp.
0
Rejoignez-nous