Отправка файлов из input type='file'

152
28 декабря 2019, 20:00

Есть форма отправки на сайте.

<form>
<input id="images" class="images" name="images[]" type="file">
<input id="images" class="images" name="images[]" type="file">
</form>

Использую formData, чтобы передать изображения в php

  (function ($) {
    $.fn.serializefiles = function () {
      var obj = $(this);
      var formData = new FormData($('form')[0]);
        $.each($('#images')[0].files, function(i, file) {
    formData.append('file[]', file);
        });
      var params = $(obj).serializeArray();
      $.each(params, function (i, val) {
        formData.append(val.name, val.value);
      });
      return formData;
    };
  })(jQuery);

Ответ приходит такой

Array
(
    [name] => Array
        (
            [0] => 125-micro-max.jpg
            [1] => 125-max.jpg
        )
    [type] => Array
        (
            [0] => image/jpeg
            [1] => image/jpeg
        )
    [tmp_name] => Array
        (
            [0] => E:\OSPanel\userdata\temp\phpF05F.tmp
            [1] => E:\OSPanel\userdata\temp\phpF060.tmp
        )
    [error] => Array
        (
            [0] => 0
            [1] => 0
        )
    [size] => Array
        (
            [0] => 30204
            [1] => 30754
        )
)

Как сделать чтобы ответ приходил такой?

Array 
(
    Array
    (
        [name] => Array
            (
                [0] => 125-micro-max.jpg
            )
        [type] => Array
            (
                [0] => image/jpeg
            )
        [tmp_name] => Array
            (
                [0] => E:\OSPanel\userdata\temp\phpF05F.tmp
            )
        [error] => Array
            (
                [0] => 0
            )
        [size] => Array
            (
                [0] => 30204
            )
    )
    Array
    (
        [name] => Array
            (
                [0] => 125-max.jpg
            )
        [type] => Array
            (
                [0] => image/jpeg
            )
        [tmp_name] => Array
            (
                [0] => E:\OSPanel\userdata\temp\phpF060.tmp
            )
        [error] => Array
            (
                [0] => 0
            )
        [size] => Array
            (
                [0] => 30754
            )
    )
)
Answer 1

Это очень хороший вопрос. Я никогда не понимал, почему все подряд руководства предлагают такую структуру, которую неудобно обрабатывать.

Куда удобнее обрабатывать массив $_FILES, во втором варианте. Для этого надо всего лишь давать полям уникальные имена,

<form>
<input id="images1" class="images" name="images1" type="file">
<input id="images2" class="images" name="images2" type="file">
</form>

над будет только яваскрипт поправить

READ ALSO
Вывод постов на страницу по условию

Вывод постов на страницу по условию

Имеем следующую форму с выбором даты:

158
Как сделать переключатель по кнопке

Как сделать переключатель по кнопке

Есть кнопка <a class="hv linkphoto button8">Логин</a> Как сделать переключатель по кнопке, чтобы при нажатии $num менялся на число 99? Просто делаю сайт...

159
PHP Запуск скрипта-демона на python

PHP Запуск скрипта-демона на python

Ubuntu 1804 Почему при вызове моего питоновского скрипта-демона из PHP страница бесконечно грузится? Вывод вроде как направляю в файл и использую...

158