上传与多个输入multpile文件

问题描述:

我的HTML代码(AJAX方法):上传与多个输入multpile文件

<?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++; 
     } 
    ?> 

标签是远远落后。这就是为什么它没有出现。

我的PHP(AJAX方法):

<?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); 
} 

该文件夹是在服务器上创建的,但只有前输入的第一个文件中上传这就是为什么我没有把所有的JavaScript。代码是完美的。代码中唯一的问题是“move_uploaded_file”。

你有什么想法吗?

+0

您对文件夹有读写权限 – Toxide82

+0

是的,第一个文件正确地上传atm。问题是下一个文件.. – Kuartz

+0

是否说该文件夹第二次存在? – Toxide82

我找到了我的解决方案。事实上,变量$ key总是一样的。所以图片总是被循环删除。

我不得不写:

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

要让$键值。我用相同的用法保留$照片。现在一切正常。

希望它可以帮助。