2016-06-15 3 views
2

html 양식에서 텍스트 파일을 업로드하려고합니다. 을 바탕으로언더우드를 사용하는 멀티 파트 양식 데이터 예제

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

:

한번 다음 코드를 사용 HttpHandler

답변

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(); 
관련 문제