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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[eZ Publish] explication pour l'upload d'un fichier


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut [eZ Publish] explication pour l'upload d'un fichier
    hello à tous ,

    qui pourrait juste m'expliquer ce bout de code car si j'ai bien compris c'est ici que ma limite pour un upload s'effectue et j'aimerai changer la valeur

    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
     
    if ( $_SERVER['REQUEST_METHOD'] === 'POST' )
    {
        // Need to detect if post_max_size has been reached. If so, all post variables are gone...
        $postMaxSize = trim( ini_get( 'post_max_size' ) );
        $postMaxSizeBytes = $postMaxSize;
        $postMaxSizeUnit = 'b';
        // post_max_size can have values like 8M which needs to be converted to bytes
        $last = strtolower( $postMaxSize[strlen($postMaxSize)-1] );
        if ( !is_numeric( $last ) )
            $postMaxSize = substr( $postMaxSize, 0, -1 );
        switch ( $last )
        {
            case 'g':
                $postMaxSizeBytes *= 1073741824; // = 1024 * 1024 * 1024
                $postMaxSizeUnit = 'Gb';
                break;
            case 'm':
                $postMaxSizeBytes *= 1048576; // = 1024 * 1024
                $postMaxSizeUnit = 'Mb';
                break;
            case 'k':
                $postMaxSizeBytes *= 1024;
                $postMaxSizeUnit = 'Kb';
                break;
        }
        if ( (int)$_SERVER['CONTENT_LENGTH'] > $postMaxSizeBytes &&  // This is not 100% acurrate as $_SERVER['CONTENT_LENGTH'] doesn't only count post data but also other things
            count( $_POST ) === 0 )                                 // Therefore we also check if request got no post variables.
        {
            $validation['attributes'][] = array( 'id' => '1',
                                                 'identified' => 'generalid',
                                                 'name' => ezpI18n::tr( 'kernel/content', 'Error' ),
                                                 'description' => ezpI18n::tr( 'kernel/content', 'The request sent to the server was too big to be accepted. This probably means that you uploaded a file which was too big. The maximum allowed request size is %max_size_string.', null, array( '%max_size_string' => "$postMaxSize $postMaxSizeUnit" ) ) );
            $validation['processed'] = true;
        }
    }
    merci par avance

  2. #2
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    La limite ne s'effectue pas là mais dans la configuration de ton serveur PHP.

    Ici, ton script va chercher la valeur de la limite dans le php.ini via la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_get('post_max_size')
    et vérifie si l'upload actuelle ne dépasse pas. (enfin, pas que l'upload, cette commande régit TOUT ce qui passe par POST, dont les fichiers)

    Tu peux sans doute la modifier par ini_set('post_max_size')
    http://www.php.net/manual/fr/function.ini-set.php
    http://www.php.net/manual/fr/ini.cor....post-max-size

    Soit directement dans ton .ini si tu y as accès.

    Attention, cette valeur est importante et doit être plus élevée que http://www.php.net/manual/fr/ini.cor...d-max-filesize
    qui est la "vraie" valeur max pour les fichiers !
    Le fichier uploadé ne peut pas être plus grand que la mémoire allouée : http://www.php.net/manual/fr/ini.cor...i.memory-limit
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    je te remercie de ta réponse mais toujours le même résultat j'arrive pas à uploader un fichier et ceux malgré la modification dans le php.ini du post max size passe a 84Mo et le memory_limite est bien a 128 Mo

    tu peux m'expliquer ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            case 'g':
                $postMaxSizeBytes *= 1073741824; // = 1024 * 1024 * 1024
                $postMaxSizeUnit = 'Gb';
                break;
            case 'm':
                $postMaxSizeBytes *= 1048576; // = 1024 * 1024
                $postMaxSizeUnit = 'Mb';
                break;
            case 'k':
                $postMaxSizeBytes *= 1024;
                $postMaxSizeUnit = 'Kb';
                break;
    je vois pas à corresponde ces chiffres

  4. #4
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Citation Envoyé par schranz Voir le message
    je te remercie de ta réponse mais toujours le même résultat j'arrive pas à uploader un fichier et ceux malgré la modification dans le php.ini du post max size passe a 84Mo et le memory_limite est bien a 128 Mo
    Il faut voir aussi upload-max-filesize et il est possible que le serveur http (Apache?) ait des limites de son côté.

    Citation Envoyé par schranz Voir le message
    je vois pas à corresponde ces chiffres
    post_max_size peut être exprimé en bytes, kilobytes, megabytes, etc.

    Le script récupère la dernière lettre de post_max_size afin de savoir en quoi il est exprimé et selon les cas, il multiplie en conséquence pour avoir A CHAQUE FOIS le résultat $postMaxSizeBytes en bytes (afin de le comparer avec $_SERVER['CONTENT_LENGTH'] apparemment).

    Exemples :
    post_max_size = 64b
    $postMaxSizeBytes = 64

    post_max_size = 36m
    $postMaxSizeBytes = 36 * 1048576 = 37748736
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    Il faut voir aussi upload-max-filesize et il est possible que le serveur http (Apache?) ait des limites de son côté.
    le upload-max-filesize je l'ai mis à 20M
    le serveur apache est ok , je me demande d'où vient le soucis car j'arrive pas à uploader une vidéo de plus de 8 Mo .

    IL y a une éventuelle possibilité à ce que l'on puisse dans ez publish un poid d'upload ?

Discussions similaires

  1. Form onSubmit pour l'upload d'un fichier
    Par Zouko dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/02/2009, 23h24
  2. [Upload] 2 type file pour 1 upload
    Par flydragon dans le forum Langage
    Réponses: 4
    Dernier message: 10/05/2006, 09h29
  3. [Upload] Type de fichiers et extensions pour upload
    Par temperature dans le forum Langage
    Réponses: 3
    Dernier message: 27/04/2006, 15h28
  4. [FLASH MX2004] Explication pour les comboBox
    Par Sorento dans le forum Flash
    Réponses: 7
    Dernier message: 18/06/2005, 23h47
  5. Réponses: 4
    Dernier message: 30/04/2005, 13h59

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