Проблема с загрузкой файловых входов с несколькими именами - PullRequest
0 голосов
/ 22 мая 2018

У меня есть несколько полей ввода файла с общим именем и уникальным именем для каждого ввода файла. Уникальное имя предназначено для некоторых целей проверки.

<input name="file12 ftr_file_uploads[]" class="multi_files file " type="file">
<input name="file10 ftr_file_uploads[]" class="multi_files file " type="file">
<input name="file10 ftr_file_uploads[]" class="multi_files file " type="file">
...............

При попытке загрузить файлы в форме PHP, отправьте,содержимое $ _FILES выглядит следующим образом.

    array(2) { 
   ["file1_ftr_file_uploads"]=> array(5)
        { ["name"]=> array(1) { [0]=> string(13) "Jellyfish.jpg" } 
        ["type"]=> array(1) { [0]=> string(10) "image/jpeg" } 
        ["tmp_name"]=> array(1) { [0]=> string(14) "/tmp/phpx7iId2" } 
        ["error"]=> array(1) { [0]=> int(0) } 
        ["size"]=> array(1) { [0]=> int(775702) } }
  ["file2_ftr_file_uploads"]=> array(5) 
        { ["name"]=> array(1) { [0]=> string(12) "Penguins.jpg" } 
        ["type"]=> array(1) { [0]=> string(10) "image/jpeg" } 
        ["tmp_name"]=> array(1) { [0]=> string(14) "/tmp/phpN6QWoD" } 
        ["error"]=> array(1) { [0]=> int(0) } 
        ["size"]=> array(1) { [0]=> int(777835) } } 
  }

Имя ключа массива изменилось на объединенные имена поля ввода файла. Мне нужно, чтобы имена были ftr_file_uploads, а не fileIDnumber_ftr_file_uploads.

Я сделал так:

foreach($_FILES as $keyval=>$value)
    {
          $_FILES['ftr_file_uploads'] = $_FILES[$keyval]; //removed 
           $_FILES['ftr_file_uploads'][] mentioned in the answer 
           unset($_FILES[$keyval]);
    }

Когда я использую вот так, я получаю вот такой результат.

    array(1) {
  ["ftr_file_uploads"]=>
  array(5) {
    ["name"]=>
    array(1) {
      [0]=>
      string(14) "Lighthouse.jpg"
    }
    ["type"]=>
    array(1) {
      [0]=>
      string(10) "image/jpeg"
    }
    ["tmp_name"]=>
    array(1) {
      [0]=>
      string(14) "/tmp/phpLdslxb"
    }
    ["error"]=>
    array(1) {
      [0]=>
      int(0)
    }
    ["size"]=>
    array(1) {
      [0]=>
      int(561276)
    }
  }
}

Мне нужен вот такой результат.

 array(1) {
  ["ftr_file_uploads"]=>
  array(5) {
    ["name"]=>
    array(2) {
      [0]=>
      string(14) "Hydrangeas.jpg"
      [1]=>
      string(5) "w.jpg"
    }
    ["type"]=>
    array(2) {
      [0]=>
      string(10) "image/jpeg"
      [1]=>
      string(10) "image/jpeg"
    }
    ["tmp_name"]=>
    array(2) {
      [0]=>
      string(14) "/tmp/phpKMwmH1"
      [1]=>
      string(14) "/tmp/phpwwHU9G"
    }
    ["error"]=>
    array(2) {
      [0]=>
      int(0)
      [1]=>
      int(0)
    }
    ["size"]=>
    array(2) {
      [0]=>
      int(595284)
      [1]=>
      int(879394)
    }
  }
}

1 Ответ

0 голосов
/ 22 мая 2018
foreach ($_FILES as $name => $file) {
    $_FILES['ftr_file_uploads'][] = $file;  // [] means add $file to $_FILES['ftr_file_uploads'] array
    unset($_FILES[$name]); // remove element from $_FILES
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...