2017-03-06 3 views
-1

Mein HTML-Code ist (AJAX-Methode):Hochladen multpile Dateien mit mehreren Eingängen

<?php 
    $i = 1; 
    while($i < 10){ 
     ?> 
     <div id="photoManagement<?php echo $i; ?>"> 
     <div class="form-group"> 
      <label for="contenu" class="col-lg-2 control-label">Choix de la photo <?php echo $i; ?></label> 
      <div class="col-lg-7"> 
       <input id="photo<?php echo $i; ?>" type="file" name="image<?php echo $i; ?>" accept="image/*"> 
      </div> 
     </div><br /><br /> 

     <div class="form-group" style="margin-bottom: 0;"> 
      <div id="image_preview<?php echo $i; ?>" class="col-lg-12"> 
       <div class="thumbnail hidden"> 
        <img src="http://placehold.it/5" alt=""> 
        <div class="caption"> 
         <h4></h4> 
         <p></p> 
         <p><button id="cancelImg<?php echo $i; ?>" type="button" class="btn btn-flat btn-danger">Annuler</button> 
         <button id="sendImg<?php echo $i; ?>" location.hred = "#portfolioImg1" class="pull-right btn btn-dark btn-theme-colored btn-flat mr-5">Ajouter</button></p> 
        </div> 
       </div> 
      </div> 
     </div> 
     </div> 
     <?php 
     $i++; 
     } 
    ?> 

Der Tag weit hinter ist. Deshalb wird es nicht angezeigt.

Meine PHP (AJAX-Methode):

<?php 

header("Access-Control-Allow-Origin: *"); 

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')) //sécurité pour ne pas avoir d'accès direct sur le fichier 
{ 
    include('../MODEL/sqlConnexion.php'); 
    //Partie traitement des photos 
    foreach($_FILES as $photo) 
    { 
     $key = key($_FILES); 
     if (isset($photo)) 
     { 
      if ($photo['error'] == 0) 
      { 
       // Test pour voir si l'extension du fichier est bien autorisée 
       $file_path = pathinfo($photo['name']); 
       $file_extension = $file_path['extension']; 
       $allowed_extensions = array('jpg', 'jpeg', 'gif', 'png'); 
       if (in_array($file_extension, $allowed_extensions)) 
       { 
        // Test pour voir si le fichier n'est pas trop gros 
        if ($photo['size'] <= 1048576) 
        { 
         $response['check'] = 'OK'; 
         $path = '../images/chevaux/' . $_POST['horseName'] . '/' . $key . '.' . $file_extension; 
         $folder = '../images/chevaux/' . $_POST['horseName']; 
         if (!is_dir($folder)) 
          { 
           mkdir($folder); 
          } 
         move_uploaded_file($photo['tmp_name'], $path); 
        } 
        else 
        {   
         $response[$nomImage] = "Le fichier " . $key . " est trop volumineux."; 
        } 
       } 
       else 
       { 
        $response[$nomImage] = "L'extension du fichier " . $key . " n'est pas prise en charge, les extensions prises en charge sont jpg, jpeg, gif, et png."; 
       } 

      } 
      elseif ($photo['error'] != 4) 
      { 
       $response[$nomImage] = "Le fichier " . $key . "est en erreur."; 
      } 
     } 
    } 
    if ((count($response) == 1) && ($response['check'] == 'OK')) 
    { 
     $response['check'] = 'OK'; 
    } 
    else 
    { 
     $response['check'] = 'NOTOK'; 
    } 
    echo json_encode($response); 
} 

Der Ordner auf dem Server erstellt wird, sondern nur die erste Datei des ersten Eingangs hochgeladen wird in Deshalb habe ich nicht die ganze Javascript gelegt hat. Code, der perfekt funktioniert. Das einzige Problem mit dem Code ist "move_uploaded_file".

Haben Sie eine Idee?

+0

haben Sie Lese-/Schreibzugriff auf den Ordner – Toxide82

+0

Ja, die erste Datei ist korrekt atm hochgeladen. Das Problem ist die nächsten Dateien .. – Kuartz

+0

sagt es der Ordner existiert das zweite Mal? – Toxide82

Antwort

0

Ich fand meine Lösung. Tatsächlich war die Variable $ key immer gleich. Also wurde das Bild immer mit der Schleife gelöscht.

ich schreiben musste:

foreach($_FILES as $key=>$photo) 

den $ Schlüsselwert hat. Und ich behalte $ Foto mit dem gleichen Gebrauch. Alles ist jetzt in Ordnung.

Ich hoffe, es kann helfen.

Verwandte Themen