2017-12-07 4 views
0

내 백엔드 코드는 question과 매우 유사합니다.Vertx FileUpload 단위 테스트

Router router = Router.router(vertx); 
router.route().handler(BodyHandler.create().setDeleteUploadedFilesOnEnd(true)); 

router.route("/api/*") 
        .produces(Constants.JSON_CONTENT_TYPE) 
        .failureHandler(rc -> { 
         // handling failure code 
       }); 

router.post("/api/upload").handler(uploadHandler::uploadHandler); 
vertx.createHttpServer(httpOptions) 
        .requestHandler(router::accept)        // The router::accept, method passes all routes defined in Router. 
        .listen(// do things); 
class UploadHandler() { 
    void uploadHandler(RoutingContext context) { 
     uploads.forEach(// do things); 
    } 
} 

나는 방법을 테스트 우편 배달부을 사용하고있다. 그것은 완벽하게 작동합니다.

우편 배달부, 나는 파일을 업로드 할 수 파일 대신 텍스트를 POST, 본문으로 어떤 헤더, 폼 데이터를 선택하고 선택합니다.

우체국콘텐츠 유형이 자동으로 포함되어 있는지 확인했습니다.

나는 이것이 좋은 접근 방법이라고 생각합니다. 더 나은 접근 방법이 있다면 알려주십시오.

문제점은 단위 테스트입니다. 나는 이와 비슷한 코드를 사용했다. https://github.com/vert-x/vertx-examples/blob/master/src/raw/java/upload/UploadClient.java

비슷한 일을하는 다른 스 니펫이 있습니다. 그러나 서버는 파일이 첨부되지 않는다고 계속 말합니다.

파일을 서버로 보내는 좋은 방법은 무엇입니까?

답변

0

최신 버전으로

Vert.x

의 이전 버전에 질문의 포인트 링크, 당신은 Vert.x 웹 클라이언트를 사용해야합니다. 응답에 대한 전체 클라이언트/서버 샘플에 대한
String filename = "upload.txt"; 
FileSystem fs = vertx.fileSystem(); 

WebClient client = WebClient.create(vertx); 

fs.props(filename, ares -> { 
    FileProps props = ares.result(); 
    System.out.println("props is " + props); 
    long size = props.size(); 

    HttpRequest<Buffer> req = client.put(8080, "localhost", "/"); 
    req.putHeader("content-length", "" + size); 

    fs.open(filename, new OpenOptions(), ares2 -> { 
    req.sendStream(ares2.result(), ar -> { 
     if (ar.succeeded()) { 
     HttpResponse<Buffer> response = ar.result(); 
     System.out.println("Got HTTP response with status " + response.statusCode()); 
     } else { 
     ar.cause().printStackTrace(); 
     } 
    }); 
    }); 
}); 

Vert.x examples repository

+0

안녕을 확인, 감사합니다. 나는이 코드를 시도했다. 서버는 여전히 파일을받지 못한다고 말하고 있습니다. 나는 내 서버 코드를 의심하기 시작했다. 그러나 우편 배달부는 파일을 보낼 수있었습니다. – william