Bonjour,
J'ai un formulaire qui me permet d'uploader des images sur mon site.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<label for="photo">Insérer votre photo : </label>
<input type="hidden" name="MAX_FILE_SIZE" value="300000">
<input type="file" style="width:10px"  name="photo"><dfn>(Facultatif)</dfn> <br/>
et voici mon code qui me gere l'upload avec un redimensionnement et un control dans la base de données pour savoir si le fichier existe.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
 
If ((!$error)&& ($_POST["valider"]=="valider")) {
//SI LA PHOTO EST REMPLI ALORS :
		if (($_FILES['photo']['name'])<>""){ 
				//echo "Si il n'y a pas d'erreur";
				$dossier = $_SERVER['DOCUMENT_ROOT']. '/photos/';
				$fichier = basename($_FILES['photo']['name']);
				$taille_maxi = 300000;
				$taille = filesize($_FILES['photo']['tmp_name']);
				$extensions = array('.jpg', '.jpeg', '.JPG', '.JPEG');
				$extension = strrchr($_FILES['photo']['name'], '.');
				//redimension de la photo
				$infos_img = getimagesize($_FILES['photo']['tmp_name']);
				$largeurDestination = 500; 
				$quality    = 90;
				//Début des vérifications de sécurité...
				//Si l'extension n'est pas dans le tableau
				if(!in_array($extension, $extensions)) 
						{
							$erreur = '<p>Vous devez uploader un fichier de type jpg ou jpeg</p>'; 
						}
 
				if($taille>$taille_maxi)
							{
							$erreur = '<p>Votre fichier est trop volumineux</p>';
							}
 
				if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
					{
				     //On formate le nom du fichier ici...
				     $fichier = strtr($fichier, 
				         'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
				          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
						$fichier= strtolower($fichier); //met tout en minuscule
						$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
 
					 /* verification du nom dans la base de donnée */
					$sql="SELECT nom FROM photos where nom='$fichier'";
					$req = mysql_query($sql) or die('<p id="message">Une erreur s\'est produite. Veuillez nous excuser pour ce désagrément. (Erreur 1)</p>');  
					 //echo "SELECT nom FROM photos where nom='".$fichier."'";
					 $val=mysql_fetch_array($req);
//if---6					 
					 if ($val){
					 $fichier="";
					/*  Ce nom de fichier existe deja donc */
					 $tab = array('a','b','c','d','e','f','g','i','j','k',
				                   'l', 'm', 'n', 'o', 'p',
				                   'k', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
				   for ($i = 1; $i <= 15; $i++)
				   {
				    $fichier=$fichier.$tab[rand(0,36)] ;
						}
					$fichier=$fichier.$extension;
//if---fin6					
				}
 
					/*RE verification du nom dans la base de donnée */
					$sql="SELECT nom FROM photos where nom='".$fichier."'";
					$req=mysql_query($sql)or die('<p id="message">Une erreur s\'est produite. Veuillez nous excuser pour ce désagrément. (Erreur 2)</p>'); 
					 $val=mysql_fetch_array($req);
//if---7	
					 if ($val){
					 $fichier="";
					/*  Ce nom de fichier existe deja donc */
					 $tab = array('a','b','c','d','e','f','g','i','j','k',
				                   'l', 'm', 'n', 'o', 'p',
				                   'k', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
				   for ($i = 1; $i <= 15; $i++)
					{
				    $fichier=$fichier.$tab[rand(0,36)] ;
					}
					$fichier=$fichier.$extension;
					}
//if---fin7
//if---8	
 
 echo "<br><br>FILES = ".$_FILES['photo']['tmp_name'];
					if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
					{ 
 
 
					//calcul et redimension
                    //*********************
                    $fichierSource  = $dossier ;
                    $fichierSource .= "/";
                    $fichierSource .= $fichier;  
                    $fichierSource  = $fichierSource;
 
                    //hauteur / largeur 
                    $rapport = $infos_img[1] / $infos_img[0];
                    //Dimension de sortie
                    $hauteurDestination = $largeurDestination * $rapport; 
 
					 //Réaloue la mémoire dont le serveur à besoin
                       //*******************************************
                       $memoryNeeded = round(($infos_img[0] * $infos_img[1] * $infos_img['bits'] * $infos_img['channels'] / 8 + Pow(2, 16)) * 1.65);
                       $mem_in_use= memory_get_usage();
                       //echo "Mémoire utilisée : $memoryNeeded contre $mem_in_use<br><br>";
                       $test = (integer) ini_get('memory_limit') + ceil(((memory_get_usage() + $memoryNeeded) - (integer) ini_get('memory_limit') * pow(1024, 2)) / pow(1024, 2)) + 1;            
                       //solution calculée
 
                       if(function_exists('memory_get_usage') && memory_get_usage() + $memoryNeeded > (integer) ini_get('memory_limit') * pow(1024, 2))               
                           ini_set('memory_limit', (integer) ini_get('memory_limit') + ceil(((memory_get_usage() + $memoryNeeded) - (integer) ini_get('memory_limit') * pow(1024, 2)) / pow(1024, 2)) + 2 . 'M');
 
					//Création de l'image
                    //*******************
 
 
                    $source = imagecreatefromjpeg($fichierSource); 
 
                    $largeurSource = imagesx($source); 
                    $hauteurSource = imagesy($source);
//if---10                                      
                    if($largeurSource > $largeurDestination){
                       $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination)      
                            or die ('<p id="message">Une erreur s\'est produite. Veuillez nous excuser pour ce désagrément. (Erreur 3)</p>');  
                    }
//if---fin10
                    else{  
                       $im = ImageCreateTrueColor ($infos_img[0], $infos_img[1])
                            or die ('<p id=message">Une erreur s\'est produite. Veuillez nous excuser pour ce désagrément. (Erreur 4)</p>');
                       $largeurDestination = $infos_img[0];
                       $hauteurDestination = $infos_img[1];     
                    }
					 //Redimentionnement
                    //***************** 
                    ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);                                                                          
                    //Création du fichier de sortie
                    //*****************************
                    $fh=fopen($fichierSource,'w');
                    fclose($fh);
                    ImageJpeg ($im,$fichierSource,$quality);
                    $size_file = filesize($fichierSource);
 
					//On dit que la photo a bien été sauvegarder
					$photo_upload="oui";
 
					}
 
						else //Sinon (la fonction renvoie FALSE).
						{
 
						echo '<p id="message">Echec de l\'upload. <br/><a href="insert.php">Retourner au formulaire</a></p>';
						$error_upload="Echec de l'upload";
 
						}
					}	 
 
					else
						{
					     echo $erreur;
 
						}
 
					}
 
					}
Voilà.

Le problème que je rencontre c'est que quand j'upload certaine images, ca ne passe pas.

Le move_uploaded_file me renvoi FALSE pour la simple raison que $_FILES['photo']['tmp_name'] est vide (mais que pour certaines images)

Après plusieurs test j'ai fini par remplacer, dans mon formulaire, size="10" par style="width:10px" et là j'ai des images qui ne passaient pas qui maintenant passe.

Mais j'en ai encore qui ne passe pas car $_FILES['photo']['tmp_name'] est vide.

D'ou viens ce problème ?? Je n'y comprend vraiment plus rien

Merci et bonne journée