Page 1 sur 1

Pbs aléatoires d'uploads d'images dont taille < 2Mo

Posté : 07 févr. 2007, 00:48
par angelseb
Bonjour,

je me suis servi du tutorial concernant l'upload des fichiers, présent sur ce site, j'ai effectué des modifications mais j'ai quelques problèmes :
- les fichiers *.bmp et *.png ne sont pas uploadés
- certains fichiers *.gif ne sont pas non plus uploadés

J'ai vérifié que les extensions étaient bien autorisées lors de l'upload. Les fichiers incriminés font entre 200 Ko et 800 Ko.
Lorsque je teste la taille du fichier, la fonction "echo" ne renvoie rien du tout! Absolument aucune erreur ou chiffre ou je ne sais quoi, comme si je n'avais rien affiché. J'ai effectué aussi le test sur le type et là idem : rien ne s'affiche.

Par contre, la fonction isset($_FILES['photo']) fonctionne, c'est à la fin de l'algo, lors de cette ligne que l'upload ne fonctionne pas et m'affiche le messager d'erreur "problème d'upload" :
if(move_uploaded_file($_FILES['photo']['tmp_name'],$dest_dossier.$dest_fichier))

Je travaille en local avec easyphp 1.8 pour l'instant.


Voici le code de ma page :
<html>
<body>
<?php

if(isset($_FILES['photo']))
{
	unset($erreur);
	$extensions_ok = array('png','gif','jpg','jpeg','bmp');
	$taille_max = 1024000;
	$dest_dossier = 'images/';
	// vérifications
	
	echo $_FILES['photo']['type']."<br/>";
	
	if(!in_array(substr(strrchr($_FILES['photo']['name'],'.'),1),$extensions_ok))
	{
		$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
		echo $erreur;
	}
	elseif(filesize($_FILES['photo']['tmp_name']) > $taille_max)
	{
		$erreur = 'La taille est trop importante!';
		echo $erreur;
	}

	// copie du fichier
	if(!isset($erreur))
	{
		$dest_fichier = basename($_FILES['photo']['name']);
		// formatage nom fichier
		// enlever les accents
		$dest_fichier = strtr($dest_fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',     'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
		// remplacer les caracteres autres que lettres, chiffres et point par _ 
		$dest_fichier = preg_replace('/([^.a-z0-9]+)/i','_',$dest_fichier);
		// copie du fichier
		if(move_uploaded_file($_FILES['photo']['tmp_name'],$dest_dossier.$dest_fichier))
		{
			echo "Le fichier '".$_FILES['photo']['name']."' a bien été ajouté";
		}
		else
		{
			echo "Problème d'upload!";
		}
	}
}
?>

<!-- Attention, de ne pas oublier le enctype="multipart/form-data" -->
<form method="POST" action="" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers -->
<input type="hidden" name="MAX_FILE_SIZE" value="1024000" />
<fieldset><legend align="top">Envoi de fichiers</legend>
<!-- champs d'envoi de fichier, de type file -->
<p>
  <label for="photo">Photo : </label>
  <input type="file" name="photo" /></p>
<p>
  <label for="photo_2">Photo 2 : </label>
  <input type="file" name="photo_2" /></p>
<p><input type="submit" name="envoi" value="Envoyer" /></p>
</fieldset>
</form>
</body>
</html>
Merci d'avance pour vos réponses :)

Posté : 07 févr. 2007, 00:57
par angelseb
Je viens de trouver moi-même : j'ai carrément oublié un Zéro dans la taille max du fichier... J'avais mis 100Ko et non 1Mo.

J'ai honte, excusez-moi :oops:

P.S. : du coup j'ai édité mon post au dessus en rajoutant le Zéro.