Я пытаюсь загрузить текстовый файл из html-формы.Пример многостраничных форм-данных с использованием Undertow
Есть ли пример того, как получить текстовый файл из HttpHandler
Я пытаюсь загрузить текстовый файл из html-формы.Пример многостраничных форм-данных с использованием Undertow
Есть ли пример того, как получить текстовый файл из HttpHandler
я однажды использовал следующий код:
Builder builder = FormParserFactory.builder();
final FormDataParser formDataParser = builder.build().createParser(exchange);
if (formDataParser != null) {
exchange.startBlocking();
FormData formData = formDataParser.parseBlocking();
for (String data : formData) {
for (FormData.FormValue formValue : formData.get(data)) {
if (formValue.isFile()) {
// process file here: formValue.getFile();
}
}
}
}
Вы можете использовать встроенный -in EagerFormParsingHandler и привяжите обработчик, как в примере ниже. Этот обработчик проанализирует запрос и сохранит многофакторный файл (ы) в вашем определенном каталоге системного свойства java.io.tmpdir (по умолчанию, но настраивается). В вашем дескрипторе вы можете найти файл и обработать его по своему усмотрению. Кроме того, EagerFormParsingHandler добавляет слушателя, чтобы удалить все созданные файлы из вашей файловой системы, как только обмен завершится.
HttpHandler multipartProcessorHandler = (exchange) -> {
FormData attachment = exchange.getAttachment(FormDataParser.FORM_DATA);
FormData.FormValue fileValue = attachment.get("file").getFirst();
Path file = fileValue.getPath();
};
Undertow server = Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(
new EagerFormParsingHandler(
FormParserFactory.builder()
.addParsers(new MultiPartParserDefinition())
.build()
).setNext(multipartProcessorHandler)
)
.build();
server.start();