IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Upload] un soucis d'upload : $_FILES['fichier']['size']


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 84
    Points : 38
    Points
    38
    Par défaut [Upload] un soucis d'upload : $_FILES['fichier']['size']
    Bonjour,

    voila je développe un formulaire avec la possibilité d'upload une image.
    j'ai dévéloppé le code sans soucis et cela fonctionne si le fichier répond aux normes que j'ai fixé.
    Je suis en ce moment sur le test des différentes erreurs.
    J'ai provoqué une erreur avec un fichier trop volumineux et le soucis que j'ai c'est que lorsque j'affiche $_FILES['fichier']['size'] c'est variable est nule.

    pourtant mon image fait 81.8 ko.






    auriez vous une idée de l'origine du problème?

    je vous joins mon code html et php

    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
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
     
    <?php session_start(); ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <?php include("./fonction.php");?>
    <html>
    <head>
    <title>Lycée Pierre et Marie Curie [Formulaire]</title>
    <link href="./interface/style.css" rel="stylesheet" type="text/css"/>
    </head>
    <body>
    	<?php
    		include("./interface/page.php");	/* forme du site de la bannière à la boîte du contenu */
    		$maxsize=60000;
    		$maxwidth=450;
    		$maxheight=450;
    		$fichier_ok=false;
     
    		echo '&nbsp;nom :&nbsp;'.$_FILES['fichier']['name'].'<br />';
    		echo '&nbsp;type :&nbsp;'.$_FILES['fichier']['type'].'<br />';  
    		echo '&nbsp;size :&nbsp;'.$_FILES['fichier']['size'].'<br />';   
    		echo '&nbsp;tmp_name :&nbsp;'.$_FILES['fichier']['tmp_name'].'<br />'; 
    		echo '&nbsp;error :&nbsp;'.$_FILES['fichier']['error'].'<br />'; 
     
    		$nom_fichier= strtr($_FILES['fichier']['name'], " ", "_");
    		$taille_fichier=$_FILES['fichier']['size'];
     
    		extract($_POST);
     
    		// tableau des extensions valident
    		$extensions_valides = array('jpg','jpeg','gif','png');
     
    		// vérification pour s'assurer que le fichier à bien été uploadé. Pour ce faire, nous allons utiliser le code d'erreur du fichier.
    		switch($_FILES['fichier']['error'])
    		{
    			case UPLOAD_ERR_OK : // Fichier bien reçu
    				// vérification de la taille maximale
    				if ($taille_fichier > $maxsize) 
    				{
    					$alerte_fichier="Fichier trop volumineux, la taille maximale autorisée est de ".$maxsize." octets votre fichier fait ".$taille_fichier." octets";
    				}
    				else
    				{
    					// vérification de l'extension du fichier
    					$extension_upload = substr(  strrchr($nom_fichier, '.')  ,1);
    					$extension_upload = strtolower($extension_upload ); //on converti l'extension en minuscule
    					if (!in_array($extension_upload,$extensions_valides) ) 
    					{	
    						$alerte_fichier="Extension incorrecte";
    					}
    					else
    					{
    						// vérification de la taille de l'image (en pixel)
    						$image_sizes = getimagesize($_FILES['fichier']['tmp_name']);
    						if ($image_sizes[0] > $maxwidth || $image_sizes[1] > $maxheight) 
    						{
    							$alerte_fichier="Image trop grande";
    						}
    						else
    						{	
    							$fichier_ok=true;
    						}
    					}
    				}
     
    				break;
    			case UPLOAD_ERR_NO_FILE : // aucun fichier n'a était saisie
    				$image="";
    				break;
    			case UPLOAD_ERR_FORM_SIZE : // taille du fichier supérieur à upload_max_filesize
    				$alerte_fichier="Fichier trop volumineux, la taille maximale autorisée est de ".$maxsize." octets votre fichier fait ".$taille_fichier." octets";
    				break;
    			case UPLOAD_ERR_PARTIAL : // fichier partiellement transféré
    				$alerte_fichier="Un problème est survenu lors du transfert : fichier non transféré";
    				break;
    			case 5 : // fichier partiellement transféré
    				$alerte_fichier="Fichier non trouvé : fichier non transféré";
    				break;
    			default : // erreur non prévue
    				$alerte_fichier="Erreur inconnue : ".$_FILES['fichier']['error']." : fichier non transféré";
    		}
     
    		if($titre=="")
    		{
    			$alert_titre="Veuillez saisir un titre !";
    		}
     
    		if($article=="")
    		{
    			$alert_article="Veuillez saisir un article !";
    		}
     
     
    		if(isset($alert_titre) || isset($alert_article) || isset($amert_fichier))
    		{
    			echo '<form  name="formulaire" method="post" action="traitement.php" enctype="multipart/form-data">
    				<fieldset id="contenu_accueil">
    					<legend>Formulaire</legend>
    					<div class="ligne">
    						<span class="case">
    							<label>Rubrique :</label><br />
    						</span>
    					</div>
    					<div class="ligne">
    						<span class="case">
    							<select name="rubrique"><option>Accueil</option></select><br />
    						</span>
    					</div>
    					<div class="ligne">
    						<span class="case">';
     
    			if(isset($alert_titre))
    			{
    				echo '<label>Titre :</label>&nbsp;<span style="color: red ; ">'.$alert_titre.'</span><br />';
    			}
    			else
    			{
    				echo '<label>Titre :</label><br/>';
    			}
     
    			echo	'		</span>
    					</div>
    					<div class="ligne">
    						<span class="case">
    							<input type="text" name="titre" size="71"/><br />
    						</span>
    					</div>
    					<div class="ligne">
    						<span class="case">';
     
     
     
    			if(isset($alert_article))
    			{
    				echo '<label>Article :</label>&nbsp;<span style="color:red;">'.$alert_article.'</span><br />';
    			}
    			else
    			{
    				echo '<label>Article :</label><br/>';
    			}
     
    			echo	'	</span>
    					</div>
    					<div class="ligne">
    						<span class="case">
    							<textarea name="article"></textarea><br />
    						</span>
    					</div>
    					<div class="ligne">
    						<span class="case">';
    			if(isset($alerte_fichier))
    			{
    				echo '<label>Image :</label>&nbsp;<span style="color:red;">'.$alerte_fichier.'<br />';
    			}
    			else
    			{
    				echo '<label>Image :</label><br />';
    			}
    			echo	'	</span>
    					</div>
    					<div class="ligne">
    						<span class="case">
    							<input type="hidden" name="MAX_FILE_SIZE" value="60000">
    							<input type="file" name="fichier" size="57" /><br /><br />
    						</span>
    					</div>
    					<div class="ligne">
    						<span class="case">
    							<input type="submit" value="Valider"/>
    						</span>
    						<span  class="case">
    							<input type="reset" value="Annuler" name="clear"/>
    						</span>
    					</div>
    				</fieldset>
    			</form>';
    		}
     
    		else
    		{
    			if($fichier_ok==true)
    			{
    				// déterminer la destination du fichier
    				$destination = '../images/'.$nom_fichier;
    				// on récupère le chemin du fichier à copier
    				$fichier_temp = $_FILES['fichier']['tmp_name'];
    				// copier le fichier temporaire (tester le résultat)
    				if(copy($fichier_temp,$destination))
    				{
    					// copie ok  >> message de confirmation
    					$message = "Transfert terminé - Fichier = $nom_fichier <br />";
    					$message .= "Taille = $taille_fichier octect";
    					echo '<div class="alerte_entete"></div>
    						<div class="alerte">'.$message.'<br />
    							<br />Aperçu de l&apos;image :<br />
    							<img src="'.$destination.'" alt="test" />
    						</div>
    				  <div class="alerte_pied"></div>';
    				}
    				else
    				{
    					// problème de copie >> message d'erreur
    					$message = "Problème de copie sur le serveur";
    					echo '<div class="alerte_entete"></div>
    						<div class="alerte">'.$message.'<br /></div>
    				  <div class="alerte_pied"></div>';
    				}
    			}
    			else
    			{
    				echo '<div class="alerte_entete"></div>
    					<div class="alerte">'.$alerte_fichier.'<br /></div>
    				<div class="alerte_pied"></div>';
    			}
    		}	
     
    		include("./interface/bas_de_page.html");	/* forme du site de la boîte du contenu à la boîte de fin de page */	
    	?>
    </body>
    </html>

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 84
    Points : 38
    Points
    38
    Par défaut
    Tout fonctionné sans problème et a présent c mon $_FILE['fichier']['tmp_name'] qui est vide et tout mon script php pour l'insertion dans la bd plante. Je comprend pas pouquoi cela change du tout au tout. Si quelqu'un à une idée du problème parce que je vois pas d'ou ca vien.

  3. #3
    Membre habitué Avatar de Aliosha
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 124
    Points : 138
    Points
    138
    Par défaut
    60000 octets = 60kilo-octets...

    Ton fichier de 81ko est trop volumineux.

    (Edit : pour ton problème de tmp_name je ne vois pas... tu as dû modifier quelque chose qui fallait pas.)

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 84
    Points : 38
    Points
    38
    Par défaut
    j'avais remarqué qu'il était tropgros mais ca je m'en fiche je veux recupérer tout de meme sont size

  5. #5
    Membre habitué Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Points : 186
    Points
    186
    Par défaut
    Si je peux me permettre cela ne va pas résoudre ton problème mais 60000 octets ne parle pas vraiment à un utilisateur Lambda l'affichage en Ko, Mo, Go etc.... est préférable.

    Ceci était juste une remarque ergonomique sur ton problème.

    Bon comme j'aime pas de remarque qui ne concerne pas le problème sans essayer d'aider je te renvois sur ce lien il te permettra peut etre de t'éclairer sur l'upload de fichiers.

Discussions similaires

  1. [Upload] des Soucis d'uploads
    Par malikou dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2009, 09h08
  2. [PHP 4] [Upload] Upload - Souci de taille de fichier
    Par R@IZER dans le forum Langage
    Réponses: 12
    Dernier message: 08/01/2009, 23h42
  3. Réponses: 5
    Dernier message: 14/02/2006, 14h16
  4. Upload et enregistrement du nom du fichier dans une bdd
    Par johan_barbier dans le forum XMLRAD
    Réponses: 8
    Dernier message: 26/09/2005, 12h02
  5. [Upload] Date de dernier accès aux fichiers...
    Par John@EuroDevz dans le forum Langage
    Réponses: 10
    Dernier message: 08/04/2005, 10h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo