2016-06-15 12 views

答えて

1

:に基づいて

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

は、 -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(); 
関連する問題