2015-11-22 2 views
2

Я подаю форму с несколько загрузкой файлов, все, что я хочу
дифференцироваться загруженными изображениями в зависимости от категории, которые они
закачанногоТэга моих нескольких загруженных изображений

<form action="upload.php" method="POST"> 
<table> 
    <tr> 
    <td> 
     <select name="category[]" > 
      <option value="13">Food</option> 
      <option value="15">Medicine</option> 
     </select> 
    </td> 
    <td> 
     <input type="file" multiple name="product_image[]"> 
    </td> 
    </tr> 
    <tr> 
    <td> 
     <select name="category[]" > 
      <option value="13">Food</option> 
      <option value="15">Medicine</option> 
     </select> 
    </td> 
    <td> 
     <input type="file" multiple name="product_image[]"> 
    </td> 
    </tr> 
    <tr> 
    <td> 
     <input type="submit" value="submit"> 
    </td> 
    </tr> 

</table> 
</form> 

Выбор категории, как " пища "и загрузив одно изображение с именем" food.jpg "в первом ряду. Выбор категория как «лекарство» и загрузить два изображения с именем «medicine1.jpg и medicine2.jpg» во второй строке и О представлении моего результата приходят в

Array(
     [category] => Array 
      (
      [0] => 13 
      [1] => 15 
      ) 
     [product_image] => Array 
      (
      [0] => food.jpg 
      [1] => medicine1.jpg 
      [2] => medicine2.jpg 
      ) 
) 

Но я хочу, чтобы пометить изображения в соответствии с категорией стоимости , Как я хочу

[product_image] => Array 
      (
      [13] => food.jpg 
      [15] => medicine1.jpg 
      [15] => medicine2.jpg 
      ) 
+0

Вы сохраняете изображение в db или каталог? –

+0

Я сохраняю только имя файла на db, изображение в каталоге. –

+0

Сохраните в определенной папке, затем назвали категорию мудрым. –

ответ

0

Возможным решением является создание скрытого поля ввода при отправке формы, содержащей конкатенированное значение идентификатора выбранной категории и имени файла. Формат может выглядеть следующим образом:

«id_selected_category ## имя_файла»

Затем вы можете использовать этот разделитель (в данном случае ##), чтобы получить категорию и имя файла на сервере из массив $ _POST, и таким образом вы знаете, какая категория была выбрана для этого изображения.

Имя скрытого поля ввода в этом примере:

'category_file'

Ваш $_POST массив будет выглядеть примерно так:

array(3) { 
    ["category"]=> 
    array(2) { 
    [0]=> 
    string(2) "13" 
    [1]=> 
    string(2) "13" 
    } 
    ["product_image"]=> 
    array(3) { 
    [0]=> 
    string(5) "1.jpg" 
    [1]=> 
    string(5) "2.jpg" 
    [2]=> 
    string(5) "3.jpg" 
    } 
    ["category_file"]=> 
    array(3) { 
    [0]=> 
    string(9) "13##1.jpg" 
    [1]=> 
    string(9) "13##2.jpg" 
    [2]=> 
    string(9) "13##3.jpg" 
    } 
} 

Например :

<?php 
if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    if (isset($_POST['category_file'])) { 
     $categoryFiles = $_POST['category_file']; 

     foreach($categoryFiles as $categoryFile) { 
      $categoryAndFile = array_filter(explode("##", $categoryFile)); 

      if (count($categoryAndFile) == 2) { 
       // Here you can differentiate the uploaded images according to the category which they were uploaded 
       $category = $categoryAndFile[0]; 
       $file = $categoryAndFile[1]; 
      } 
     } 
    } 
} 
?> 
<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#theForm").submit(function() { 
       var categories = $('select[name=category\\[\\]]'); 

       $(categories).each(function() { 
        var category = this; 
        var imageNames = $(this).parent().next().children('input[type="file"]').prop("files"); 

        $(imageNames).each(function(){ 

         // Concatenate the selected category with the name of the image 
         var categoryFileName = $(category).val() + '##' + this.name; 

         // Add the hidden input field 
         $('<input>').attr({ 
          type: 'hidden', 
          name: 'category_file[]', 
          value: categoryFileName 
         }).appendTo("#theForm"); 
        }); 
       }); 
      }); 
     }); 
    </script> 
</head> 
<body> 
<form id="theForm" action="upload.php" method="POST"> 
    <table> 
     <tr> 
      <td> 
       <select name="category[]" > 
        <option value="13">Food</option> 
        <option value="15">Medicine</option> 
       </select> 
      </td> 
      <td> 
       <input type="file" multiple name="product_image[]"> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <select name="category[]" > 
        <option value="13">Food</option> 
        <option value="15">Medicine</option> 
       </select> 
      </td> 
      <td> 
       <input type="file" multiple name="product_image[]"> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <input type="submit" value="submit"> 
      </td> 
     </tr> 

    </table> 
</form> 
</body> 
</html> 
+0

Когда я печатаю как console.log (imageNames), его показ не определен. –

+0

@rohitjaiswal Что вы видите, когда копируете весь код из примера? Вы добавили 'id =" theForm "в форму? Что вы видите, когда вы это делаете: 'var_dump ($ _ POST);' right after' if ($ _SERVER ['REQUEST_METHOD'] === 'POST') {', а затем отправить? –

+0

Большое спасибо, его отлично работает. –

0
if (!is_dir($dir)) { 
     mkdir($dir); 
else 

    //upload image 


    } 

Create directory

Создать каталог, используя выше код и учебник, когда вы получили изображение и только собирается сохранить в БД. Затем загрузите это изображение в указанный путь к каталогу.

+0

Но как бы я различал, какие файлы должны быть загружены в какой каталог? –

Смежные вопросы