Erreur upload fichiers multiple

Résolu
LearnDeep Messages postés 70 Statut Membre -  
LearnDeep Messages postés 70 Statut Membre -
Bonjour , je suis entrain d'importer plusieurs fichiers a la fois mais j'ai rencontré plusieurs problèmes.
mon code php :

if (isset($_FILES["image"])) {
        $countImg = count($_FILES['image']['name']);
        
        $newImgName = array();
        $img = array();
        $actualName = array();
        $target_file = array();
        $imgextension = array();
        $actualSize = array();
        $image = array();

        for($i=0;$i<$countImg;$i++){
            $newImgName[$i] = bin2hex(random_bytes(10));
            $img[$i] = $_FILES["image"][$i];
        $actualName[$i] = $_FILES["image"]["tmp_name"][$i];
        $target_file[$i] = $target_dir . basename($_FILES["image"]["name"][$i]);
        $imgextension[$i] = pathinfo($target_file[$i], PATHINFO_EXTENSION);
        $actualSize[$i] = $_FILES['image']['size'][$i];
        var_dump(  $newImgName[$i]);
        var_dump( $img[$i]);
        var_dump( $target_file[$i]);
        var_dump($imgextension[$i]);
        }
        $legalImgExtensions = array("jpg", "png","PNG","JPG","JPEG","jpeg");
        $legalimgSize = 10000000; // 10000000 Octets = 10 MO
       
       
    }

    if (isset($_FILES["video"])) {
        $countVid = count($_FILES['video']['name']);
        $target_file_video = $target_dir . basename($_FILES["video"]["name"]);
        $newVidName = bin2hex(random_bytes(10));
        $videoextension = pathinfo($target_file_video, PATHINFO_EXTENSION);
        $legalVidExtensions = array("mp4");
        $legalSize = 100000000; // 10000000 Octets = 10 MO
        $VideoSize = $_FILES['video']['size'];
    }
 

    function conn()
    {
        try {
            $bdd = new PDO('mysql:host=localhost; dbname=meslek; charset=utf8', 'root', '');
            $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            die('Erreur : ' . $e->getMessage());
        }
        return $bdd;
    }

    
        $db = conn();
        for($i=0;$i<$countImg;$i++){
        if ( isset($_FILES["image"][$i]) and !empty($_FILES["image"][$i]) and in_array($imgextension[$i], $legalImgExtensions) and $actualSize[$i] <= $legalimgSize) {
            move_uploaded_file($_FILES["image"]["tmp_name"][$i], $target_dir  . '/' . $newImgName[$i] . '.' . $imgextension[i]);
            $image[$i] = $newImgName[$i] . '.' . $imgextension[$i];
            if(!isset($_FILES["video"])){
            $prep = $db->prepare("INSERT INTO images (titre_img) VALUES(?)");
            $prep->execute([$image[$i]]);
            }
        } else if( isset($_FILES["image"]) && !isset($_FILES["video"])){
            echo json_encode(false);
            @unlink($target_dir . '/' . $newImgName[$i] . '.' . $imgextension[$i]);
            die;
        }}


les erreurs:

1 réponse

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Vu que tu ne nous indiques pas à quelles lignes correspondent les erreurs ... et que tu ne nous postes pas ton code complet... il sera difficile de t'indiquer quelles sont tes erreurs.

    0
    1. LearnDeep Messages postés 70 Statut Membre
       
      <?php
      
      error_reporting(E_ALL);
      ini_set('display_errors', TRUE);
      ini_set('display_startup_errors', TRUE);
      header("Access-Control-Allow-Origin: *");
      header("Access-Control-Allow-Credentials: true ");
      header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS, FILES');
      header("Access-Control-Allow-Headers: X-Custom-Header, Origin, Content-Type , Authorisation , X-Requested-With");
      header("Content-Type: application/json; charset=UTF-8 ");
      header("Referrer-Policy: origin-when-cross-origin");
      header("Expect-CT: max-age=7776000, enforce");
      header('Strict-Transport-Security: max-age=16070400; includeSubDomains');
      header('X-XSS-Protection: 1; mode=block');
      header('X-Content-Type-Options: nosniff');
      header('X-Frame-Options: SAMEORIGIN');
      
      
      if (!isset($_FILES["video"]) && !isset($_FILES["image"])) {
          echo json_encode(false);
      } else {
      
      
          $target_dir = "../../Meslek/MeslekCombat/src/assets/uploads/";
          
          if (isset($_FILES["image"])) {
           $countImg = count($_FILES['image']['name']);
              var_dump($countImg);
              $newImgName = array();
              $img = array();
              $actualName = array();
              $target_file = array();
              $imgextension = array();
              $actualSize = array();
              $image = array();
      
              for($i=0;$i<$countImg;$i++){
                  $newImgName[$i] = bin2hex(random_bytes(10));
                  $img[$i] = $_FILES["image"][$i];
              $actualName[$i] = $_FILES["image"]["tmp_name"][$i];
              $target_file[$i] = $target_dir . basename($_FILES["image"]["name"][$i]);
              $imgextension[$i] = pathinfo($target_file[$i], PATHINFO_EXTENSION);
              $actualSize[$i] = $_FILES['image']['size'][$i];
              var_dump(  $newImgName[$i]);
              var_dump( $img[$i]);
              var_dump( $target_file[$i]);
              var_dump($imgextension[$i]);
              }
              $legalImgExtensions = array("jpg", "png","PNG","JPG","JPEG","jpeg");
              $legalimgSize = 10000000; // 10000000 Octets = 10 MO
             
             
          }
      
          if (isset($_FILES["video"])) {
              $countVid = count($_FILES['video']['name']);
              $target_file_video = $target_dir . basename($_FILES["video"]["name"]);
              $newVidName = bin2hex(random_bytes(10));
              $videoextension = pathinfo($target_file_video, PATHINFO_EXTENSION);
              $legalVidExtensions = array("mp4");
              $legalSize = 100000000; // 10000000 Octets = 10 MO
              $VideoSize = $_FILES['video']['size'];
          }
       
      
          function conn()
          {
              try {
                  $bdd = new PDO('mysql:host=localhost; dbname=meslek; charset=utf8', 'root', '');
                  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
              } catch (PDOException $e) {
                  die('Erreur : ' . $e->getMessage());
              }
              return $bdd;
          }
      
          
              $db = conn();
              for($i=0;$i<$countImg;$i++){
              if ( isset($_FILES["image"][$i]) and !empty($_FILES["image"][$i]) and in_array($imgextension[$i], $legalImgExtensions) and $actualSize[$i] <= $legalimgSize) {
                  move_uploaded_file($_FILES["image"]["tmp_name"][$i], $target_dir  . '/' . $newImgName[$i] . '.' . $imgextension[i]);
                  $image[$i] = $newImgName[$i] . '.' . $imgextension[$i];
                  if(!isset($_FILES["video"])){
                  $prep = $db->prepare("INSERT INTO images (titre_img) VALUES(?)");
                  $prep->execute([$image[$i]]);
                  }
              } else if( isset($_FILES["image"]) && !isset($_FILES["video"])){
                  echo json_encode(false);
                  @unlink($target_dir . '/' . $newImgName[$i] . '.' . $imgextension[$i]);
                  die;
              }}
      
      $t =isset($_FILES["video"])  and in_array($videoextension, $legalVidExtensions) and $VideoSize <= $legalSize;
              if (isset($_FILES["video"])  and in_array($videoextension, $legalVidExtensions) and $VideoSize <= $legalSize) {
      
                  move_uploaded_file($_FILES["video"]["tmp_name"],  $target_dir  . '/' . $newVidName . '.' . $videoextension);
                  $video = $newVidName . '.' . $videoextension;
                  if(!isset($_FILES["image"])){
                  $p = $db->prepare("INSERT INTO videos (titre_vid) VALUES(?)");
                  $p->execute([$video]);
                  }
              } else if($t == false and isset($_FILES["video"])){
      
                  echo json_encode(false);
                  @unlink($target_dir . '/' . $newVidName . '.' . $videoextension);
                  die;
              }
      
      
              if (isset($_FILES["video"])  && isset($_FILES["image"])) {
                  $pr = $db->prepare("INSERT INTO images (titre_img) VALUES(?)");
                  $pr->execute([$image]);
                  $pre = $db->prepare("INSERT INTO videos (titre_vid) VALUES(?)");
                  $pre->execute([$video]);
              }
      
      
              $db = null;
              echo json_encode(true);
          
      }
      
      
      0
    2. LearnDeep Messages postés 70 Statut Membre
       
      les lignes qui correspondent a l'erreur c'est indiqué dans la capture d'écran que j'ai partagé
      0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Bonjour,

      Commence par faire un var_dump de ta variable $_FILES['image']
      Tu verras si c'est un array ou non...
      0
    4. LearnDeep Messages postés 70 Statut Membre
       
      elle a affiché seulement le premier fichier mais les autres sont disapparu.
      0
    5. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > LearnDeep Messages postés 70 Statut Membre
       
      Tu as donc la réponse à ton souci...
      La variable ne contient pas ce que tu pensais...
      Il faut donc corriger ça.
      Sûrement au niveau de ton formulaire html...
      0