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 11/10/2007, 12h30   #1
Membre du Club
 
Inscription : janvier 2006
Messages : 250
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 250
Points : 64
Points : 64
Par défaut [Upload] Erreur lors du déplacement de l'image

Bonjour à tous ,
Je shouaite importer des images jpg via un formulaire, l'image sera renommée via un champs SerialID + .jpg et mise dans un fichier img/motos/.
Voici mon code formulaire)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<form name="upload" enctype="multipart/form-data" method="post" action="verif_ajout_moto.php">
<input type="file" name="file">
<tr>
	<td>SerialId: </td>
	<td><input type = "text" name = "SerialId"/></td>
</tr>
<TR>
	<TD align ="center">
	<input type="submit" name="bouton_submit" value="Envoyer le fichier">
	</TD>
<TR>
</form>
Et la verif PHP :

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
$SerialId = $_POST['SerialId'];
 
// Définition des variables globales
// Récupération du dossier dans lequel le fichier sera uploadé								      
$DESTINATION_FOLDER = "/img/motos/";
// Taille maximale de fichier, valeur en bytes					
$MAX_SIZE = 5000000;											
// Récupération de l'url de retour								
$RETURN_LINK = "ajoutermoto.php";					
// Définition des extensions de fichier autorisées (avec le ".")//
$AUTH_EXT = array(".jpeg",".jpg","");											
 
// Fonction permettant de créer un lien de retour automatique
function createReturnLink(){
	global $RETURN_LINK;
	echo "<a href='".$RETURN_LINK."'>Retour</a><br>";
}
 
// Fonction permettant de vérifier si l'extension du fichier est autorisée.
function isExtAuthorized($ext){
	global $AUTH_EXT;
	if(in_array($ext, $AUTH_EXT)){
		return true;
	}else{
		return false;
	}
}
 
// On vérifie que le champs contenant le chemin du fichier soit bien rempli.
if(!empty($_FILES["file"]["name"]))
{	
	// Nom du fichier choisi:
	$nomFichier = $SerialId.".jpg";
	//echo $nomFichier;
	//Nom temporaire du fichier 
	$temp_nomFichier = $_FILES["file"]["tmp_name"];
	// Type du fichier choisi:
	$typeFichier = $_FILES["file"]["type"] ;
	// Poids en octets du fichier choisit:
	$poidsFichier = $_FILES["file"]["size"] ;
	// Code de l'erreur si jamais il y en a une:
	$codeErreur = $_FILES["file"]["error"] ;
	// Extension du fichier
	$extension = strrchr($nomFichier, ".");
 
	print_r($_FILES);
	die;
 
	// Si le poids du fichier est de 0 bytes, le fichier est invalide (ou le chemin incorrect) => message d'erreur
	// sinon, le script continue.
	if($typeFichier == "image/pjpeg"){
		if($poidsFichier <> 0){
			// Si la taille du fichier est supérieure à la taille maximum spécifiée => message d'erreur
			if($poidsFichier < $MAX_SIZE){
				// On teste ensuite si le fichier a une extension autorisée
				if(isExtAuthorized($extension)){	
					// Ensuite, on copie le fichier uploadé
					$uploadOk = move_uploaded_file($temp_nomFichier, $DESTINATION_FOLDER.$nomFichier);
					if($uploadOk){
						header("Location: ajoutermoto.php");
					}else{
						echo($DESTINATION_FOLDER.$nomFichier."<BR>");
						echo $nomFichier."<BR>";
						echo $typeFichier."<BR>";
						echo $temp_nomFichier."<BR>";
						echo $poidsFichier."<BR>";
						echo $extension."<BR>";
						echo("L'upload a échoué !<br><br>");
					}
				}else{
					echo ("Les fichiers avec l'extension $extension ne peuvent pas être uploadés !<br>");
					echo("<FORM ACTION=\"choix_fichier.php\">");
					echo("<input type=\"submit\" value=\"Retour\">");
					echo("<BR><BR>");
				}
			}else{
				$tailleKo = $MAX_SIZE / 1000;
				echo("Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : $tailleKo Ko.<br>");
				echo("<FORM ACTION=\"ajoutermoto.php\">");
				echo("<input type=\"submit\" value=\"Retour\">");
				echo("<BR><BR>");
			}				
		}else{
			echo("Le fichier choisi est invalide !<br>");
			echo("<FORM ACTION=\"ajoutermoto.php\">");
			echo("<input type=\"submit\" value=\"Retour\">");
			echo("<BR><BR>");
		}
		}else{
			echo ("L'upload à échoué car le fichier ".$nomFichier." n'est pas un fichier de type image/jpg .<br>");
			echo("<FORM ACTION=\"ajoutermoto.php\">");
			echo("<input type=\"submit\" value=\"Retour\">");
			echo("<BR><BR>");
		}
}else{
	echo("Vous n'avez pas choisi de fichier !<br>");
	echo("<FORM ACTION=\"ajoutermoto.php\">");
	echo("<input type=\"submit\" value=\"Retour\">");
	echo("<BR><BR>");
}
?>
L'erreur est la suivante il me dit :
Citation:
Warning: move_uploaded_file(/img/motos/test.jpg): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\verif_ajout_moto.php on line 60

Warning: move_uploaded_file(): Unable to move 'C:/Program Files/EasyPHP1-8\tmp\php7B.tmp' to '/img/motos/test.jpg' in c:\program files\easyphp1-8\www\verif_ajout_moto.php on line 60
ou d'apres le print_r($_FILE):
Citation:
Array ( [file] => Array ( [name] => Copie de HCBR1000R.jpg [type] => image/jpeg [tmp_name] => C:/Program Files/EasyPHP1-8\tmp\php8E.tmp [error] => 0 [size] => 35126 ) ) L'upload à échoué car le fichier test.jpg n'est pas un fichier de type image/jpg .
Peut être que vos yeux avertits vont trouver cette facheuse erreur.
Merci avant toute chose pour votre aide.
javaboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 11h45   #2
Membre du Club
 
Avatar de randimby
 
Inscription : décembre 2003
Messages : 64
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 64
Points : 57
Points : 57
Envoyer un message via MSN à randimby
Es-tu sur que le dossier c:\img\motos existe est est writeable?
randimby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 12h09   #3
Membre confirmé
 
Inscription : juillet 2007
Messages : 201
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 201
Points : 227
Points : 227
A mon avis tu mélanges sérialId et le nom même du fichier qui est $file dans ton formulaire...Et ton nom de fichier est
Code :
$_FILES["file"]["name"] et non $SerialId.".jpg"; et le nom dans le dossier temp de ton serveur est :$nomTmp      = $_FILES['fichier']['tmp_name']
Je ne vois vraiment pas pourquoi tu fais un rapport entre serialid et nom de fichier.......
acirfa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 13h19   #4
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'idée de faire intervenir un autre champ pour donner un nom différent sur le serveur ne vous a-t-elle pas effleurée l'esprit ?

D'où sortez-vous la variable $nomTmp ? Il utilise déjà le nom temporaire donné par le serveur au fichier grâce à $temp_nomFichier = $_FILES["file"]["tmp_name"] !

J'aurais tendance à expliquer l'erreur par le fait que $DESTINATION_FOLDER = "/img/motos/"; désigne un chemin absolu qui est faux ...
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 14h56   #5
Membre confirmé
 
Inscription : juillet 2007
Messages : 201
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 201
Points : 227
Points : 227
Autant pour moi julp j'ai mal recopier son code..... en faite c'est

Code :
$temp_nomFichier=$_FILES['fichier']['tmp_name']
que j'ai voulu ecrire........

En lisant son message d'erreur je te rejoinds en disant que le chemin de son image ("/img/motos/")doit pas être bon.
acirfa 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 06h41.


 
 
 
 
Partenaires

Hébergement Web