Problème avec formulaire d'upload de fichier


biscuit
WRInaute impliqué
WRInaute impliqué
 
Messages: 519
Inscription: 5 Juin 2006

Problème avec formulaire d'upload de fichier

Message le Dim Aoû 12, 2007 12:48

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: Tout sélectionner
$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


bproductiv
WRInaute accro
WRInaute accro
 
Messages: 4173
Inscription: 27 Déc 2004

Message le Lun Aoû 13, 2007 9:28

tu te prend la tete pour rien, tope une bonne classe et ca ira tout seul


biscuit
WRInaute impliqué
WRInaute impliqué
 
Messages: 519
Inscription: 5 Juin 2006

Message le Lun Aoû 13, 2007 10:27

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


rog
WRInaute passionné
WRInaute passionné
 
Messages: 1662
Inscription: 21 Sep 2006

Message le Lun Aoû 13, 2007 15:04

moi je verifie la taille de $file_size = $_FILES["pj"]["size"];

rog


biscuit
WRInaute impliqué
WRInaute impliqué
 
Messages: 519
Inscription: 5 Juin 2006

Message le Lun Aoû 13, 2007 15:14

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...


rog
WRInaute passionné
WRInaute passionné
 
Messages: 1662
Inscription: 21 Sep 2006

Message le Lun Aoû 13, 2007 18:34

nop

c'est du style

if($_FILES["pj"]["size"] < 1){
redirection vers page avec message d'erreur


biscuit
WRInaute impliqué
WRInaute impliqué
 
Messages: 519
Inscription: 5 Juin 2006

Message le Lun Aoû 13, 2007 18:42

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 !?


rog
WRInaute passionné
WRInaute passionné
 
Messages: 1662
Inscription: 21 Sep 2006

Message le Lun Aoû 13, 2007 19:59

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

alex1025
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: 9 Jan 2005

Message le Mer Aoû 15, 2007 11:20

Oui tu peux vérifier le poids :wink:

Exemple:

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



Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités