Загрузка одного файла в нескольких строках таблицы- formdata в react, мультер с выражением в узле — Требуется только предложение

#node.js #express #multer

#node.js #выразить #multer

Вопрос:

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

Единственный способ, которым я смог выяснить, был похож на приведенный ниже — иметь тот же ключ для файла и соответствующую ему дату. Представление Formdata

Но проблема здесь в моем коде nodejs

  router.post('/dosomething', upload.fields([
      { name: 'testdata1', maxCount: 1 },
      { name: 'testdata2', maxCount: 1 }
    ]), function (req, response) {
      console.log(req.files); //returns both file details
      console.log(req.body.testdata1); // returns date of testdata1
      console.log(req.body.testdata2); //returns date of testdata2
      response.json("do nothing");
})
  

Ограничение на то, сколько может быть загружено, не является гибким. Учтите, что возможно 10-15 загрузок, мне нужно было бы иметь 15 разных ключей, например, как у меня testdata1 и testdata2, что, на мой взгляд, не является хорошим вариантом. Не могли бы вы подсказать, есть ли альтернативный способ добиться этого?

Ответ №1:

Одна из возможностей — сначала принять все файлы с помощью upload.any() , а затем проверить, что было получено, в порядке. Таким образом, вы должны проверить, что количество testdataX в req.body равно количеству полученных файлов.

 router.post("/dosomething", upload.any(), function (req, res) {
  // validate testdataX's in req.body match req.files.length
  // continue with processing...
});