Я хотел бы загрузить несколько файлов изображений в одном запросе, используя multipart. Я рассмотрел примеры каратэ по этому вопросу, но загрузка нескольких файлов не удовлетворяет моей потребности (/ несколько конечных точек здесь - https://github.com/intuit/karate/blob/master/karate-demo/src/main/java/com/intuit/karate/demo/controller/UploadController.java). Моя подпись метода обслуживания (Spring REST) ожидает массив MultipartFile [], так что я могу принять любое количество файлов. Вот мой сценарий:
Scenario: Upload multiple files
* def json = {}
* set json.files[0] = { read: 'file1.jpg', filename: 'file1.jpg', contentType: 'image/jpeg' }
* set json.files[1] = { read: 'file2.jpg', filename: 'file2.jpg', contentType: 'image/jpeg' }
Given path '/rest'
And multipart files json
When method post
Then status 200
А вот и метод веб-службы Spring (просто пытаюсь получить файлы прямо сейчас, поэтому этот метод мало что делает):
@PostMapping("/rest")
public String handleFileUpload(@RequestParam("file") MultipartFile[] file) {
System.out.println("Len: " + file.length);
for(MultipartFile currentFile : file) {
System.out.println("In here: " + currentFile.getOriginalFilename());
}
return file[0].getOriginalFilename();
}
Когда я запускаю это, я получаю сообщение об ошибке каратэ: «значение составного файла должно быть json»
Если я изменю сценарий, чтобы сделать это:
Scenario: Upload multiple files
* def json = {}
* set json.files = { read: 'file1.jpg', filename: 'file1.jpg', contentType: 'image/jpeg' }, { read: 'file2.jpg', filename: 'file2.jpg', contentType: 'image/jpeg' }
Given path '/rest'
And multipart files json
When method post
Then status 200
Тогда тест выполняется нормально, но в массиве MultipartFile 'files' (аргумент метода службы) появляется только один файл.
Как правильно загрузить несколько файлов в метод веб-службы, описанный выше с использованием каратэ?
Редактировать: добавление кода клиента (ниже) и обновленного метода Spring выше.
Вот простая форма HTML, которая отправит несколько файлов в метод Spring выше:
<form method="POST" enctype="multipart/form-data" action="/rest">
<table>
<tr><td>File to upload:</td><td><input type="file" name="file" /></td></tr>
<tr><td>File to upload:</td><td><input type="file" name="file" /></td></tr>
<tr><td></td><td><input type="submit" value="Upload" /></td></tr>
</table>
</form>
При отправке я получаю 2 файла в сервисном методе.