Ich versuche, eine Textdatei von einem HTML-Formular hochzuladen.Multipart Formulardatenbeispiel mit Undertow
Gibt es ein Beispiel dafür, wie die Text-Datei aus dem einmal HttpHandler
Ich versuche, eine Textdatei von einem HTML-Formular hochzuladen.Multipart Formulardatenbeispiel mit Undertow
Gibt es ein Beispiel dafür, wie die Text-Datei aus dem einmal HttpHandler
bekommen ich den folgenden Code verwendet:
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();
}
}
}
}
Basierend auf: http://www.programcreek.com/java-api-examples/index.php?api=io.undertow.server.handlers.form.FormData
Sie können den integrierten verwenden -in EagerFormParsingHandler und verketten Sie den Handler wie im folgenden Beispiel. Dieser Handler parst die Anfrage und speichert die mehrteiligen Dateien in Ihrem System-definierten Verzeichnis "java.io.tmpdir" (standardmäßig, aber konfigurierbar). In Ihrem Handle können Sie die Datei finden und bearbeiten, wie Sie möchten. Darüber hinaus fügt EagerFormParsingHandler einen Listener hinzu, um alle erstellten Dateien aus Ihrem Dateisystem zu löschen, sobald der Austausch abgeschlossen ist.
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();