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 :

Gérer les fichiers dont la taille dépasse la taille maximale acceptée par le serveur


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Points : 98
    Points
    98
    Par défaut Gérer les fichiers dont la taille dépasse la taille maximale acceptée par le serveur
    Bonjour à tous,

    Voila mon problème, qui n'est pas dramatique mais qui doit surement pouvoir être résolu.

    J'ai un champ de type file qui, lorsqu'on clic dessus, ouvre une popup permettant d'aller récupérer un fichier dans un répertoire en local et de l'ajouter sur le serveur.

    La valeur upload_max_filesize du serveur en question est de 3Mo.

    Lorsqu'une personne souhaite uploader un fichier, on gère les erreurs. Si le fichier est vide, on affiche une alerte javascript. Si le fichier n'est pas un pdf, on affiche une alerte javascript ...

    Le problème est le suivant. Si une personne tente d'uploader un fichier de plus de 3Mo, l'erreur levé correspond à : le fichier est vide.

    J'ai donc regardé chaque attribut récupérer concernant le fichier et seul le nom est bien récupéré. Le type, la taille, ... ne sont pas récupérés.

    Donc voila je voulais savoir s'il y avait un moyen de savoir si le fichier est vraiment vide ou si sa taille est supérieure à 3Mo pour pouvoir afficher le bon message d'erreur.

    Voici juste le bout de code concernant les erreurs :
    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
     
    if ($_FILES['userfile']['name'] == "")
    {
    ?>
                <script>
    alert("Vous devez préciser un fichier à importer.");
                </script>
                <?
    }
    else if ($_FILES['userfile']['size']== 0)
    {
    ?>
                <script>
    alert("Votre fichier est vide.");
                </script>
                <?
    }
    else if ($_FILES['userfile']['size'] > $_GET['size'])
    {
    ?>
                <script>
    alert("Pour des raisons de sécurité votre fichier doit être inférieure à <?php echo doubleval(intval($_GET['size'])/1024); ?> Ko.");
                </script>
                <?
    }
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Essai d'afficher la valeur de
    regarde si elle correspond à celle définie dans le formulaire
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  3. #3
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Points : 98
    Points
    98
    Par défaut
    Salut,

    Quand j'ouvre ma popup je passe dans l'url la valeur size que je met donc à 3145728.

    Donc $_GET['size'] = 3145728.

    Le problème, c'est que si le fichier a uploader est > 3Mo, $_FILES['userfile']['size'] = 0.

    Donc je rentre dans la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    else if ($_FILES['userfile']['size']== 0)
    {
    ?>
                <script>
    alert("Votre fichier est vide.");
                </script>
                <?
    }
    Alors que le fichier n'est pas vide.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Dans ce cas-là $_FILES['userfile']['error'] n'est pas égale à la valeur de la constante UPLOAD_ERR_FORM_SIZE (voir éventuellement UPLOAD_ERR_INI_SIZE) ?

  5. #5
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Points : 98
    Points
    98
    Par défaut
    A exact !

    J'avais pas penser a utilisé cette variable, j'étais bloqué sur 'size' :s.

    Si la taille est trop grande, $_FILES['userfile']['error'] = 1;
    Si le fichier est vide, $_FILES['userfile']['error'] = 0;

    Merci bien !

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gérer les fichiers séléctionés d'un formulaire
    Par Sonic_Diabolik dans le forum VBA Access
    Réponses: 3
    Dernier message: 31/07/2008, 13h01
  2. Comment lire les fichiers dont l'extension est .tex ?
    Par condor_01 dans le forum Ubuntu
    Réponses: 3
    Dernier message: 19/10/2007, 17h24
  3. Composant pour gérer les fichiers PDF
    Par BXDSPORT dans le forum Delphi
    Réponses: 4
    Dernier message: 27/05/2007, 09h53
  4. [VB.Net] Comment gérer les fichiers ?
    Par JPV_MJ dans le forum VB.NET
    Réponses: 12
    Dernier message: 27/08/2006, 22h59
  5. Réponses: 4
    Dernier message: 16/08/2003, 14h21

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