J'essaie de télécharger un fichier texte à partir d'un formulaire html.Exemple de données de formulaire en plusieurs parties utilisant Undertow
Y at-il par exemple sur la façon d'obtenir le fichier texte de la HttpHandler
J'essaie de télécharger un fichier texte à partir d'un formulaire html.Exemple de données de formulaire en plusieurs parties utilisant Undertow
Y at-il par exemple sur la façon d'obtenir le fichier texte de la HttpHandler
J'utilisé une fois le code suivant:
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();
}
}
}
}
Vous pouvez utiliser le haut -dans EagerFormParsingHandler et enchaînez votre gestionnaire, comme dans l'exemple ci-dessous. Ce gestionnaire analyse la requête et stocke le (s) fichier (s) en plusieurs parties dans votre répertoire de propriétés système "java.io.tmpdir" (par défaut, mais est configurable). Dans votre poignée, vous pouvez trouver le fichier et le traiter comme vous le souhaitez. En outre, EagerFormParsingHandler ajoute un écouteur afin de supprimer tous les fichiers créés à partir de votre système de fichiers, dès que l'échange est terminé.
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();