Problème avec formulaire d'upload de fichier

WRInaute occasionnel
Salut toutes et tous,

J'ai fait un formulaire d'envoi de fichier et tous se passe bien, sauf un truc : quand le visiteur propose un fichier qui n'existe pas, le script tourne dans le vide... Comment savoir si le fichier proposer existe ?

Pour info voilà comment je traite mon formulaire :
Code:
$file = trim($_FILES["pj"]["name"]);
$tmp_file = $_FILES["pj"]["tmp_name"];
$file_size = $_FILES["pj"]["size"];
$file_type = $_FILES["pj"]["type"];
$file_error = $_FILES["pj"]["error"];

switch ($file_error) {
	case 6: $error_text = "Erreur: Un dossier temporaire est manquant!"; break;
	case 4: $error_text = "Erreur: aucun fichier n'a été téléchargé!"; break;
	default: case 5: case 3: $error_text = "Une erreur est survenue durant le téléchargement, merci de bien vouloir reéssayer"; break;
	case 2: case 1: $error_text = "Erreur: Le fichier téléchargé excède la taille autorisée. (max 5 Mo)"; break;
	case 0:
		/* Aucune erreur lors du transfert,
			 Alors on test s'il s'agit bien d'une image */
		
		if (is_uploaded_file($tmp_file)) {
			
			$nom_fichier = time() ."_".$file;
			$savefile = $_SERVER['DOCUMENT_ROOT'] . "articles/" .  $nom_fichier;
			move_uploaded_file($tmp_file, $savefile);
			$confirm = true;
			
		
		} else {
			$error_text = "Le fichier n'existe pas.";
		}
	break;
} // switch
 
WRInaute occasionnel
Les classes et moi on n'est pas copain... mais ça me semble un peu compliqué...

Bref, je laisse tombé, le visiteur n'a qu'à proposer un fichier qui existe :p
 
WRInaute occasionnel
Ben le problème, c'est qu'une fois le formulaire validé... la page reste bloquée là (et je ne comprend vraiment pas), cela ne va même pas jusqu'au traitement des données...
 
WRInaute passionné
nop

c'est du style

if($_FILES["pj"]["size"] < 1){
redirection vers page avec message d'erreur
 
WRInaute occasionnel
Oui j'avais bien compris... me suis mal exprimé.

En fait ce que je n'arrive pas à comprendre c'est quand je clique sur "submit" et que le champ file contient un fichier qui exite, pas de problème, le formulaire est soumis la page rechargée et le formulaire traité.

Quand il s'agit d'un fichier qui n'existe pas... le formulaire est soumis (j'ai mis un onclick disabled, mais la page ne se recharge pas... donc le formulaire n'est pas traité... si je met un test sur la taille du fichier, le test n'est donc jamais effectué...

Bizarre !?
 
WRInaute passionné
ce doit etre une erreur de logique dans les conditions

mais comme tu n'as pas posté ce qui se passe apres ton switch on ne peut pas voir

pour les controles d'erreur je prefere les elseif

rog
 
Nouveau WRInaute
Oui tu peux vérifier le poids :wink:

Exemple:

Code:
$poid = filesize($fichier)/1024;    
if ($poid <= 1 )
{
echo 'Fichier manquant';
}
else
{
// ici tu traites ton fichier avec ta fonction
}
 
Discussions similaires
Haut