2016-06-15 7 views

ответ

0

я однажды использовал следующий код:

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

основе: http://www.programcreek.com/java-api-examples/index.php?api=io.undertow.server.handlers.form.FormData

1

Вы можете использовать встроенный -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(); 
Смежные вопросы