Собрать данные с формы с загрузкой файлов

202
28 августа 2018, 04:30

Необходимо с формы собрать данные по файлам для дальнейшей передачи их AJAX'ом на сервер.

<form id="upload-docs" name="uploadDocs">
  <div class="field-upload">
    <label for="file1">Файл1:</label>
    <input id="file1" name="file1" type="file" accept=".xlsx,.xls,image/*,.doc, .docx,.ppt, .pptx,.txt,.pdf">
  </div>
  <div class="field-upload">
    <label for="file2">Файл 2:</label>
    <input id="file2" name="file2" type="file" accept=".xlsx,.xls,image/*,.doc, .docx,.ppt, .pptx,.txt,.pdf">
  </div>
  <input type="submit" value="Загрузить файлы">
</form>

Собираю данные таким образом

$('form#upload-docs input').each(function() {
   formData.append(this.name, $(this).prop('files')[0]);
});

Если собирать отдельно с каждого инпута, т.е.

formData.append('file1', $('file1').prop('files')[0]);
formData.append('file2', $('file2').prop('files')[0]);

То все работает. Если делаю через each то по итогу выходит ошибка Uncaught TypeError: Cannot read property '0' of null.

В идеале необходимо собрать данные в виде объекта, чтобы на сервере было обращение такое files['file1'][name].

Answer 1

Вы захватываете лишний input с type="submit".

$('form#upload-docs input[type="file"]').each(function() {
READ ALSO
Выбор случайных элементов из массива [дубликат]

Выбор случайных элементов из массива [дубликат]

На данный вопрос уже ответили:

205
Как правильно &ldquo;готовить&rdquo; авторизацию в SPA?

Как правильно “готовить” авторизацию в SPA?

Цель такая: написать бэкенд ASPNet Core MVC* SPA для работы с ReactJS и дальнейшей возможностью переиспользовать существующий API для создания, скажем,...

190
Сравнение даты, полученной из json

Сравнение даты, полученной из json

Сервер отдаёт дату вот в таком формате: 2015-04-24T07:00:51ZМне нужно узнать, не старше ли эта дата, например, трёх дней

214
Как отсортировать точки

Как отсортировать точки

Я хочу сделать так, чтобы можно было отсортировать двумерные точкиТо есть объекты, у которых есть 2 числовых значения

185