[ Script ] Taille Max Par Fichier Pour Téléchargement

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par thierry8, 6 Juin 2006.

  1. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    2 728
    J'aime reçus:
    0
    Vla un petit script pratique pour connaître la taille maximum autorisée par fichier pour le téléchargement de fichier.
    Je pense que cela, sera utile et pourra servir à certains d'entre nous.

    Ce script ce base sur la configuration du serveur et utilise ces variables:

    - memory_limit
    - post_max_size
    - upload_max_filesize


    :arrow: Convertit les valeurs extraites du fichier de configuration (php.ini).
    * utilisé dans la fonction taille_max_dl_fichier()

    Code:
      // retourne la valeur en octet/bytes
      function return_bytes($val)
      {
        $val = trim($val);
        $unite = strtolower($val{strlen($val)-1});
        switch($unite)
        {
          case 'g':
            $val *= 1024;
          case 'm':
            $val *= 1024;
          case 'k':
            $val *= 1024;
        }
    
        return $val;
      }
    
    :arrow: En fonction de la configuration du serveur et du nombre de fichier à télécharger on calcul la taille max possible par fichier.
    * une marge peut être utilisée ou non pour indiquer que le formulaire est susceptible de retourner d'autre éléments
    (on indique la taille en octets à soustraire, 0 si aucune marge souhaitée)

    * par rapport à memory_limit, on laisse 1,5 fois de place pour le traitement des fichiers en simultanées

    Code:
      function taille_max_dl_fichier($nb_fichier,$marge = 512000)
      {
        $post_max_size = @ini_get('post_max_size');
        if(empty($post_max_size))
        {
          $post_max_size = @get_cfg_var('post_max_size');
          if(empty($post_max_size))
            $post_max_size = '6M';
        }
        $memory_limit = @ini_get('memory_limit');
        if(empty($memory_limit))
        {
          $memory_limit = @get_cfg_var('memory_limit');
          if(empty($memory_limit))
            $memory_limit = '6M';
        }
        $upload_max_filesize = @ini_get('upload_max_filesize');
        if(empty($upload_max_filesize))
        {
          $upload_max_filesize = @get_cfg_var('upload_max_filesize');
          if(empty($upload_max_filesize))
            $upload_max_filesize = '2M';
        }
    
        $post_max_size = return_bytes($post_max_size);
        $memory_limit = return_bytes($memory_limit);
        $upload_max_filesize = return_bytes($upload_max_filesize);
    
        if($memory_limit < $post_max_size)
          $post_max_size = $memory_limit;
    
        // on enleve 500 Ko pour le reste
        $post_max_size = $post_max_size - $marge;
        $memory_limit = $memory_limit - $marge;
    
        $taille_max_dl = $post_max_size / ($nb_fichier + 1.5);
    
        if($taille_max_dl > $upload_max_filesize)
          $taille_max_dl = $upload_max_filesize;
    
        return $taille_max_dl;
      }
    
    :arrow: La fonction traite automatiquement l'affichage de l'unité, en fonction de la taille.

    Code:
      // permet de convertir à l'unité la plus proche pour l'affichage
      function convert_taille($taille_octet)
      {
        if($taille_octet < 1024)
          return $taille_octet.' Oc.';
        elseif($taille_octet >= 1024 && $taille_octet < 1048576)
          return round($taille_octet/1024,2).' Ko.';
        elseif($taille_octet >= 1048576 && $taille_octet < 1073741824)
          return round(($taille_octet/1024)/1024,2).' Mo.';
        elseif($taille_octet >= 1073741824)
          return round((($taille_octet/1024)/1024)/1024,2).' Go.';
      }
    
    :arrow: Utilisation des fonctions.
    * convert_taille() n'est pas nécessaire s'il le resultat n'est pas prévu pour l'affichage

    Code:
      echo convert_taille(taille_max_dl_fichier(4));
    
    Voila. Si vous voyez des erreurs n'hésitez pas.
    S'il faut plus de commentaires, j'essayerais de faire mieux :wink:

    note:
    Le script calcule la taille maximum que peut faire chaque fichier pour le dl, mais il se base également sur memory_limit pour un traitement simultanée des fichiers téléchargés.

    Il est donc possible de modifier le degré de marge pour la mémoire vive.
    (augmenter / diminuer / supprimer l'adition du 1.5) : $taille_max_dl = $post_max_size / ($nb_fichier + 1.5);
    Il est donc possible d'enlever entièrement ce paramètre si les fichiers ne seront pas traités en même temps pour avoir une plus grande taille par fichier autorisé.

    Dans tout les cas, la taille de téléchargement par fichier ne pourra pas dépasser upload_max_filesize.
     
  2. AW
    AW WRInaute passionné
    Inscrit:
    31 Mai 2005
    Messages:
    1 647
    J'aime reçus:
    1
    Bon j'ai pas testé mais c'est sympa de faire partager tes scripts !
     
  3. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    2 728
    J'aime reçus:
    0
    Il est très pratique pour ne plus avoir à ce soucier de la configuration du serveur. Si vous avez un formulaire avec la possibilité de télécharger par exemple 4 images en même temps, ce dernier calculera la taille max que peu faire chaque fichier.

    J'ai trouvé cela utile et pratique.
    Avec ce script, il ne devrait plus y avoir d'erreur de memory_limit, de post_max_size et/ou de upload_max_filesize.
     
Chargement...
Similar Threads - Script Taille Max Forum Date
Google réduit la taille des descriptifs (snippets) : retour à 160 caractères ? Référencement Google 14 Mai 2018
Guide de tailles, liens dans description catégorie ou produit ? e-commerce 25 Juin 2014
Taille minimum d'une description annuaire Débuter en référencement 26 Mars 2010
Entaille javascript [loader a la gmail] Développement d'un site Web ou d'une appli mobile 25 Novembre 2008
script pour savoir la taille d'un espace web (d'héberement) Développement d'un site Web ou d'une appli mobile 3 Avril 2007
tiens, description très détaillée sur résultats de recherche Google : l'entreprise, les sites web, les services 23 Novembre 2005
Taille de la meta description Référencement Google 11 Avril 2004
Meta description non prises en compte par google Rédaction web et référencement Jeudi à 11:20
WordPress Meta description produit avec WooCommerce Débuter en référencement 17 Novembre 2022
Bien gérer un script PHP un peu long Développement d'un site Web ou d'une appli mobile 12 Octobre 2022
Balise meta name description non prise en compte par Google Référencement Google 19 Septembre 2022
Deux questions pour deux scripts javascript. Développement d'un site Web ou d'une appli mobile 29 Août 2022
Search Console Comment réparer l'affichage de Google dans la mauvaise balise de description Meta ? Problèmes de référencement spécifiques à vos sites 19 Août 2022
Meta description différente de celle choisie (Rank Math + Qwant) Problèmes de référencement spécifiques à vos sites 25 Juillet 2022
Pages dynamiques avec Javascript ? Développement d'un site Web ou d'une appli mobile 14 Juillet 2022
Balise méta description : faut-il insérer son mot-clé ? Débuter en référencement 2 Juillet 2022
[JavaScript Array] modifier un code html sans le supprimer/recréer Développement d'un site Web ou d'une appli mobile 20 Juin 2022
Lien dans la description d'une vidéo YouTube...quel est prix raisonnable par mois ? YouTube, Google Images et Google Maps 16 Juin 2022
Le javascript protège-t-il du copiage HTML ? Développement d'un site Web ou d'une appli mobile 9 Mai 2022
Sites de scripts PHP, jQuery, Ajax, etc. Le café de WebRankInfo 20 Mars 2022