Req.files для хранения файловых объектов в нескольких массивах - PullRequest
0 голосов
/ 27 октября 2018

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

Перед отправкой на сервер я создаю свои данные формы следующим образом

// loop through groups
for(var i = 0; i < data.groups.length; i++) {

    formData.append('groups[]', data.groups[i])

    // loop through photos in group
    for(var s = 0; s < data.groups[i].length; s++) {
        formData.append('photos[]', data.groups[i][s])
    }

}

Теперь на моем сервере группы могут проходить циклически.Однако, с Multer в качестве промежуточного программного обеспечения, мои фотографии не принимаются в массивах.Мои файлы входят как объекты в один массив в req.files.Таким образом, вместо групп [0] /req.files [0] с 2 файлами и групп [1] /req.files [1] с 1 файлом.У меня есть группы [0] с 2 файлами и req.files [0] с 3 файлами, что затрудняет сопоставление групп с их уважаемыми фотографиями.

Любая идея, как я могу получить мои req.files для хранения массивавместо каждого файла в объекте, таком как ...

[
    [ { file }, { file } ],
    [ {  file } ]
]
// rather than
[
    {
      file
    },
    {
      file
    },
    {
      file
    }
]

** я склоняюсь к upload.fields () в попытках найти решение, но пока не сработал

1 Ответ

0 голосов
/ 27 октября 2018

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

// loop through groups
for(var i = 0; i < data.groups.length; i++) {
    // loop through photos in group
    for(var s = 0; s < data.groups[i].length; s++) {
        var fieldname = 'photos[' + i + '][]';
        formData.append(fieldname, data.groups[i][s])
    }
}

Но проблема в том, что мультиплексор не обрабатывает вложенные массивы (соглашения PHP об именах).Поэтому обратите внимание на другое промежуточное ПО, например на express-form-data.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...