Как переслать составные данные (CSV-файл и строку) с сервера узла на контроллер Spring? - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь передать данные multipart / form с сервера узла на контроллер mvc пружины. Отправьте файл csv и строку на сервер узла, затем он обрабатывает запрос с использованием промежуточного программного обеспечения multer и перенаправляет его в подпружиненный контроллер, который принимает объект формы в качестве параметра, и я могу получить доступ к файлу и строке csv через этот объект.

весна

@RequestMapping(value = "/someController", method = RequestMethod.POST)
@ResponseBody
public someResponse someController(SomeForm s) {
    // LOGIC: use this "s" object
}

public  class SomeForm{
    private MultipartFile mf;
    private String str;

    // getter and setter

}

узел

const multer = require('multer');
const upload = multer();
router.use(upload.any());

router.post('/someEndPoint', (req, res) => {
    let reqHeaders = {
        'content-type': 'multipart/form-data',
    }

    let reqToSome = {
        mf: req.file,
        str: req.body.string,
    }

    let options = {
        headers: reqHeaders,
        formData: reqToSome,
    }

    request.post("baseurl/someController", options, callbackfunc)

}

почтальон

  • posting uri: baseurl / someEndPoint
  • заголовки: тип контента, multipart / form-data
  • тело: csvFile, строка sample.csv, "aaa"

ср. pi c почтальона

Когда я отправляю эти данные от почтальона на мой сервер узлов, я получаю сообщение об ошибке: контроллер.

Я погуглил это сообщение об ошибке, но не смог понять, что это такое ...

Затем я изменил formData: reqToSome на formData: JSON.stringify(reqToSome).

На этот раз, весна Контроллер получает запрос от узла. Запрос был успешно выполнен. Но и s.mf, и s.str были нулевыми.

Теперь я предполагаю, что мне нужно проанализировать reqToSome для какой-либо формы данных, чтобы соответствовать классу MultipartFile. Если это правильно, как я могу это сделать? Если нет, какой подход я должен выбрать? Я хочу получить sample.csv и "aaa" на контроллере пружины из объекта SomeForm.

req.file и req.body.string похожи на это

строка 'aaa'

csvFile -

{ fieldname: 'csvFile',
  originalname: 'sample.csv',
  encoding: '7bit',
  mimetype: 'text/csv',
  buffer: <Buffer 6f 72 67 31 2c 20 70 69 64 31 2c 20 31 2c 20 30 0d 0a 6f 72 67 32 2c 20 70 69 64 32 2c 20 31 2c 20 30 0d 0a 6f 72 67 33 2c 20 70 69 64 33 2c 20 30 2c ... >,
  size: 52 }

Я довольно новичок в этой области технологий и действительно растерялся. Любые советы будут оценены. Спасибо.

...