Я пытаюсь выполнить сквозное тестирование для своего приложения, для этого мы используем фиктивное приложение для ввода данных для внешнего интерфейса
Моя проблема в том, что в моем приложении для весенней загрузки есть контроллеркак это
@PostMapping("/data")
public String uploadCsv(@RequestParam("files") final MultipartFile[] files, final HttpServletResponse httpResponse) throws IOException {
final List<MultipartFile> listFiles = Arrays.asList(files);
// some functionnal code
}
Я не могу использовать IHM макета для вставки данных, но форма выглядит так:
<form name="uploadForm" method="post" enctype="multipart/form-data" action="/data">
<input type="file" name="files" multiple/>
<input type="submit" value="upload"/>
</form>
Моя проблема здесь с кратным, так какВы можете видеть, что контроллер ожидает массив multiparFile.
Когда я пытаюсь отправить свои данные, я вижу с помощью отладчика, что я иду в методе контроллера для данных, но мой массив имеет размер 0и не могу получить нужные мне данные
Вот мой код для отправки моих данных:
let files =[];
let myFile = createFile();
files.push(myFile);
let data = new FormData();
data.append('files',files);
let XHR = new XMLHttpRequest();
XHR.open('POST', 'http://127.0.0.1:9000/data');
XHR.setRequestHeader('Content-Type', 'multipart/form-data;boundary=---------------------------7da24f2e50046');
XHR.setRequestHeader('Access-Control-Allow-Origin','*');
XHR.send(data);
, как вы можете видеть, я пытался создать массив File, илипросто вставьте мои файлы, но в любом случае мой массив в контроллере не содержит ничего внутри
знаете, как я могу решить мою проблему?
ОБНОВЛЕНИЕ:
I 'мы попробовали это так:
data.append('files[]',files);
sendFiles(data);
function sendFiles(formData) {
const options = {
method: "POST",
headers: {
'Content-Type': 'multipart/form-data;boundary=---------------------------7da24f2e50046',
'Access-Control-Allow-Origin': '*'
},
body: formData
};
return fetch('http://127.0.0.1:9000/data', options)
.then(response => console.log(response.data))
.catch(e => console.log('url is local not going to work'))
}
С и без [] для части 'files' вformdata
это было то же поведение, что и раньше, я прохожу через конечную точку отдыха, но с пустым многокомпонентным файлом
Поскольку эта функция просто загружает файл в макет, я могу 'Вставить HTML-код на страницу для создания формы
Приведенный выше HTML-код с вводом множественного числа является примером того, как он работает с IHM, к сожалению, я не могу использовать это для своего теста, потому что это не то же самое приложение
ОБНОВЛЕНИЕ 2:
Я думаю, что моя проблема возникает отсюда, когда я делаю свой запрос с функцией sendFiles, я вижу в своей сети вызов этого:
----- WebKitFormBoundaryBCEt6Ivp0dW6OQ8y ... данные моей формы ... ------ WebKitFormBoundaryBCEt6Ivp0dW6OQ8y-- Таким образом, существует formBoundary, который генерируется, но не добавляется в заголовки, как я могу получить этот WebKitFormBoundary, чтобы добавить его внутрьмои httpHeaders?