Почему formData не работает с несколькими файлами?

Вы можете создать массив из входов с использованием методов map и get, а затем вычислить сумму с помощью метода reduce.

let inputs = $('.filters input');
let label = $('.filter-label');

inputs.on('input', function() {
  let sum = inputs.map(function() {
    return $(this).val()
  }).get().reduce((r, e) => r + +e, 0);

  label.text(sum)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="filters">
  <div class="filter-label">6</div>
  <div class="filter-inputs">
    <input type="number" name="i1" id="i1" value="1" min="0" step="1" />
    <input type="number" name="i2" id="i2" value="2" min="0" step="1" />
    <input type="number" name="i3" id="i3" value="3" min="0" step="1" />
  </div>
</div>

Или вы можете просто создать массив с помощью метода Array.from, а затем использовать метод reduce для суммирования значений.

let inputs = $('.filters input');
let label = $('.filter-label');

inputs.on('input', function() {
  label.text(Array.from(inputs).reduce((r, {value}) => r + +value, 0))
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="filters">
  <div class="filter-label">6</div>
  <div class="filter-inputs">
    <input type="number" name="i1" id="i1" value="1" min="0" step="1" />
    <input type="number" name="i2" id="i2" value="2" min="0" step="1" />
    <input type="number" name="i3" id="i3" value="3" min="0" step="1" />
  </div>
</div>

0
задан Cindy Meister 19 January 2019 в 17:38
поделиться

1 ответ

formData.append("images", images);

Вам необходимо добавлять каждый файл по очереди. FormData не поддерживает объект FileList.

for (let i = 0 ; i < images.length ; i++) {
    formData.append("images", images[i]);
}
0
ответ дан Quentin 19 January 2019 в 17:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: