2016-06-15 4 views

Répondre

0

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(); 
       } 
      } 
     } 
    } 

Basé sur: http://www.programcreek.com/java-api-examples/index.php?api=io.undertow.server.handlers.form.FormData

1

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();