2016-06-15 5 views

Antwort

0

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

1

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