Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/05/2007, 16h58   #1
Invité de passage
 
Inscription : mai 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 11
Points : 1
Points : 1
Par défaut [FTP] Erreur retournée lors de l'utilisation de Ftp_put

Bonjour je me présente Greg jeune développeur en 2 années de BTS informatique de gestion option DA . Je me permets de créer ce post pour qu’une âme charitable puisse m’aider dans mon problème qui est que je dois rendre un module Admin vendredi matin dans lequel l’admin peu créer lui-même ces news. J’ai pratiquement tous finie sauf la partie Upload :
En effet l'admin peu uploder ces photos de son disque dur a un serveur FTP dans un dossier (ftp://greg.com/project/test/images/).
Je n’y arrive pas du tout . Je me connecte sur mon ftp correctement mais durant l’upload
Une erreur me prévient que la fonction Ftp_put ne marche pas :
Citation:
Warning: ftp_put() expects parameter 1 to be resource, string given in C:\wamp1.6\www\greg\upload2.php on line 25
fichierArraynon uploadé.
Voila mon dilemme. Si quelqu’un voudrais bien se pencher sur mon code source que voici je lui en serais reconnaissant…


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<html>
<head><title>Uploadez vos images!</title></head>
<body>
<form method="post" enctype="multipart/form-data" action="upload2.php?data=envoie">
<input type="file" name="fichier">
<input type="submit" value="Envoyer">
</form>
<?php
if ($_GET['data']==envoie ){
// Paramètres
$ftp_server = "ftp.greg.com"; 
$ftp_user_name = "xxxxxxxxxx"; 
$ftp_user_pass = "xxxxxxxxxxxxx";
$rep = "/project/test/images/";
$file = $_FILES['fichier'];  
// Connexion
$conn_id = ftp_connect($ftp_server);
// Identification par login 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)) 
	{
    die("La connexion FTP a échoué!");
	}
elseif (ftp_put("$conn_id","$rep/$file","$file",FTP_BINARY)){
echo '<br><br>fichier'.$file.'uploadé';
}
else
{
echo '<br><br>fichier'.$file.'non uploadé';
 } 
ftp_quit($conn_id);
} 
?>
</body></html>

ps:le titre du fichier souce est upload2.php
garnner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 18h37   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
L'interpolation, ici, sur $conn_id pose problème et est inutile :
Code :
ftp_put($conn_id, "$rep/$file", $file, FTP_BINARY)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 10h12   #3
Invité de passage
 
Inscription : mai 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 11
Points : 1
Points : 1
Je viens de supprimer l’interpolation" $conn_id " cela me donne :
elseif (ftp_put("$rep/$file","$file",FTP_BINARY))
Le fait est que ftp_put a besoin de 4 paramètres pas 3 alors il me retourne comme erreur

Warning: ftp_put() expects at least 4 parameters, 3 given in …
fichierArraynon uploadé
garnner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 10h13   #4
Invité de passage
 
Inscription : mai 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 11
Points : 1
Points : 1
Je viens de supprimer l’interpolation" $conn_id " cela me donne :
Citation:
elseif (ftp_put("$rep/$file","$file",FTP_BINARY))
Le fait est que ftp_put a besoin de 4 paramètres pas 3 alors il me retourne comme erreur

Citation:
Warning: ftp_put() expects at least 4 parameters, 3 given in …
fichierArraynon uploadé
garnner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 10h53   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Je vous ai donné une correction L'interpolation c'est simplement le fait qu'une variable est remplacée par sa valeur dans une chaîne délimitée par des doubles quotes.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 11h52   #6
Invité de passage
 
Inscription : mai 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 11
Points : 1
Points : 1
Je ne comprend pas bien ce que tu veux dire par rapport a :
Citation:
$conn_id
Je voudrais juste que l'ont puisse me donner une correction de mon code afin de le rendre fonctionel et m'expliquer ou j'ais fauté.
garnner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 11h55   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Je l'ai déjà fait :
Citation:
Envoyé par julp
L'interpolation, ici, sur $conn_id pose problème et est inutile :
Code :
ftp_put($conn_id, "$rep/$file", $file, FTP_BINARY)
Que cela vous donne-t-il ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 12h04   #8
Invité de passage
 
Inscription : mai 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 11
Points : 1
Points : 1
j'ais comme resultat:

Citation:
Warning: ftp_put() expects parameter 3 to be string, array given in ...

fichierArraynon uploa
Pour :

Code :
1
2
elseif (ftp_put($conn_id,"$rep/$file",$file,FTP_BINARY)){
echo '<br><br>fichier'.$file.'uploadé';
3 paramètres doivent être une chaîne de caractère. Je pense qu’il faut conserver les quotes.
garnner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 13h14   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Non justement. Bon on avance, celle-ci est due à votre affectation puisque :
Code :
$file = $_FILES['fichier'];
$file est un tableau de la forme :
Code X :
1
2
3
4
5
6
7
Array(
    'name' => 'desc.xml',
    'tmp_name' => '/tmp/phpA3.tmp',
    'error' => 0,
    'type' => 'text/xml',
    'size' => 1024
)
Donc il faudrait modifier :
Code :
$file = $_FILES['fichier']['tmp_name'];
Ou :
Code :
ftp_put($conn_id,"$rep/$file",$file['tmp_name'],FTP_BINARY)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 14h26   #10
Invité de passage
 
Inscription : mai 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 11
Points : 1
Points : 1
Effectivement $files est un tableau.
Apres avoir effectuer ces changements :

Code :
$file = $_FILES['fichier']['tmp_name'];
et

Code :
1
2
3
4
5
6
7
8
9
 elseif 
/*ligne 25*/(ftp_put($conn_id,"$rep/$file",$file['tmp_name'],FTP_BINARY)){
echo '<br><br>fichier'.$file['tmp_name'].'uploadé';
}
else
{
echo '<br><br>fichier'.$file['tmp_name'].'non uploadé'; 
 } 
ftp_quit($conn_id);
j’ais une erreur que je n’ais jamais vu :
Citation:
Warning: ftp_put(c) [function.ftp-put]: failed to open stream: No such file or directory in ….on line 25
fichier c non uploadé
Je ne comprend pas parce que je ne sais pas ce que veux dire « stream » dans ce cas precis ?
garnner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h07   #11
Invité de passage
 
Inscription : mai 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 11
Points : 1
Points : 1
Je veins de faire d'autre modification et voila mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<html>
<head><title>Uploadez vos images!</title></head>
<body>
<form method="post" enctype="multipart/form-data" action="upload2.php?data=envoie">
<input type="file" name="fichier">
<input type="submit" value="Envoyer">
</form>
<?php
if ($_GET['data']==envoie ){
// Paramètres
$ftp_server = "ftp.greg.com"; 
$ftp_user_name = "xxxxxxxx"; 
$ftp_user_pass = "xxxxxxxxx";
$rep = "/project/test/images/";
$file = $_FILES['fichier']; 
// Connexion
$conn_id = ftp_connect($ftp_server);
// Identification par login 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)) 
	{
    die("La connexion FTP a échoué!");
	}
elseif (ftp_put($conn_id,"$rep/$file",$file['tmp_name'],FTP_BINARY)){
echo '<br><br>fichier'.$file['tmp_name'].'uploadé';
}
else
{
echo '<br><br>fichier'.$file['tmp_name'].'non uploadé';
 } 
ftp_quit($conn_id);
} 
?>
</body></html>
J'ais comme reponse:
Citation:
fichierc:/wamp1.6/tmp\phpE8.tmpuploadé
mais aucun fichier dans mon ftp a /project/test/images/
En clair mon module fonctionne a moitié.
garnner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h21   #12
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
J'ai oublié d'en corriger un bout :
Code :
ftp_put($conn_id, $rep . $file['name'], $file['tmp_name'], FTP_BINARY)
Puisque $rep termine déjà par un slash lors de son initialisation, inutile d'en rajouter un
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h46   #13
Invité de passage
 
Inscription : mai 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 11
Points : 1
Points : 1
Merci à toi julp ton aide ma beaucoup Apporté ( ). Mon module est maintenant prêt grâce à toi. Pour ceux qui voudraient effectuer des upload(s) sur leur FTP voila le code source corrigé :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<html>
<head><title>Uploadez vos images!</title></head>
<body>
<form method="post" enctype="multipart/form-data" action="upload2.php?data=envoie">
<input type="file" name="fichier">
<input type="submit" value="Envoyer">
</form>
<?php
if ($_GET['data']==envoie ){
// Paramètres
$ftp_server = "ftp.greg.com"; 
$ftp_user_name = "mon_login"; 
$ftp_user_pass = "mon_pass";
$rep = "/project/test/images/";//mon dossier de destination dans le ftp
$file = $_FILES['fichier']; 
// Connexion
$conn_id = ftp_connect($ftp_server);
// Identification par login 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)) 
	{
    die("La connexion FTP a échoué!");
	}
elseif (ftp_put($conn_id, $rep . $file['name'], $file['tmp_name'], FTP_BINARY)){
echo '<br><br>fichier'.$file['tmp_name'].'uploadé';
}
else
{
echo '<br><br>fichier'.$file['tmp_name'].'non uploadé';
 } 
ftp_quit($conn_id);
} 
?>
</body></html>
Et voila ...
garnner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 17h33   #14
Invité de passage
 
Inscription : mai 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 11
Points : 1
Points : 1
Encore une correction remplacez les :

Code :
1
2
3
4
5
6
7
elseif (ftp_put($conn_id, $rep . $file['tmp_name'], $file['tmp_name'], FTP_BINARY)){
echo '<br><br>fichier'.$file['tmp_name'].'uploadé';
}
else
{
echo '<br><br>fichier'.$file['tmp_name'].'non uploadé';
 }
par:

Code :
1
2
3
4
5
6
7
elseif (ftp_put($conn_id, $rep . $file['name'], $file['tmp_name'], FTP_BINARY)){
echo '<br><br>fichier'.$file['name'].'uploadé';
}
else
{
echo '<br><br>fichier'.$file['name'].'non uploadé';
 }
comme cela vous pouvez recuperez le nom du fichier.
garnner est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h02.


 
 
 
 
Partenaires

Hébergement Web