2
0
Эх сурвалжийг харах

Ajout de méthodes pour convertir les tailles de fichiers en octets et vice versa. Mise à jour du formulaire d'ajout de vidéo pour afficher la taille maximale autorisée en fonction des paramètres PHP.

stany.ferer 2 сар өмнө
parent
commit
61ed413eb3

+ 27 - 0
core/class/fichier.class.php

@@ -251,4 +251,31 @@ class fichier
             return ['success' => FALSE, 'error' => 'Requête non autorisée.'];
         }
     }
+
+    static public function iniSizeToBytes($val)
+    {
+        $val = trim($val);
+        $last = strtolower($val[strlen($val) - 1]);
+        $num = (float)$val;
+        switch ($last) {
+            case 'g':
+                $num *= 1024;
+            case 'm':
+                $num *= 1024;
+            case 'k':
+                $num *= 1024;
+        }
+        return (int)$num;
+    }
+
+    static public function bytesToHuman($bytes)
+    {
+        $units = ['B', 'KB', 'MB', 'GB', 'TB'];
+        $i = 0;
+        while ($bytes >= 1024 && $i < count($units) - 1) {
+            $bytes /= 1024;
+            $i++;
+        }
+        return round($bytes, ($bytes >= 100 ? 0 : 1)) . ' ' . $units[$i];
+    }
 }

+ 18 - 2
core/page/video.form.add.php

@@ -1,5 +1,5 @@
 <?php
-    $data = [];
+$data = [];
 ?>
 <nav aria-label="breadcrumb" class="ariane">
     <ol class="breadcrumb" style="border-radius: 0 0 5px 5px; padding:5px 10px;">
@@ -15,12 +15,28 @@
             <span id="progressPercent">0%</span>
             <progress id="progressBar" value="0" max="100" style="width: 100%; display: none;"></progress>
         </div>
+        <?php
+        // Récupère les valeurs de php.ini et calcule la taille maximale en octets
+        $uploadIni = ini_get('upload_max_filesize');
+        $postIni = ini_get('post_max_size');
+
+        $uploadBytes = fichier::iniSizeToBytes($uploadIni);
+        $postBytes = fichier::iniSizeToBytes($postIni);
+        $maxBytes = min($uploadBytes, $postBytes);
+        ?>
+
         <div class='form-group SubmitElement'>
             <label for='videoFile'>Charger la vidéo</label>
             <div class='custom-file'>
                 <input type='file' name='videoFile' class='custom-file-input' id='videoFile' accept='video/*' required>
                 <label class='custom-file-label' for='videoFile'>Choisir un fichier</label>
             </div>
+            <!-- Champ caché pour indiquer la taille max en octets (valeur utilisée côté serveur si présent) -->
+            <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $maxBytes; ?>">
+            <small class="form-text text-muted">
+                Taille max autorisée : <?php echo fichier::bytesToHuman($maxBytes); ?>
+                (php.ini : upload_max_filesize=<?php echo htmlspecialchars($uploadIni); ?>, post_max_size=<?php echo htmlspecialchars($postIni); ?>)
+            </small>
         </div>
         <div class='form-group' id="previewFileName" style="display:none;">
             <label for='selectedFileName'>Nom de la vidéo sélectionnée</label>
@@ -122,7 +138,7 @@
         xhr.send(formData);
     });
 
-    function showElement(){
+    function showElement() {
         var elements = document.getElementsByClassName('SubmitElement');
         for (var i = 0; i < elements.length; i++) {
             elements[i].style.display = 'block';