【问题标题】:Vertx FileUpload Unit TestVertx 文件上传单元测试
【发布时间】:2017-12-07 15:13:46
【问题描述】:

我的后端代码与question 非常相似。

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

我一直在使用 postman 来测试这些方法。它运行良好。

postman中,我选择POSTno headersform-data作为body,选择files 而不是文本来上传文件。

我在服务器中检查了 postman 自动包含 content-type

我假设这是一个好方法。请让我知道是否有更好的方法。

我的问题在于单元测试。 我使用了与此类似的代码。 https://github.com/vert-x/vertx-examples/blob/master/src/raw/java/upload/UploadClient.java

还有其他类似的 sn-ps。但是服务器一直说没有附加文件。

将文件发送到服务器的好方法是什么?

【问题讨论】:

    标签: file-upload vert.x


    【解决方案1】:

    您问题中的链接指向旧版本的 Vert.x

    对于最新版本,您应该使用 Vert.x Web 客户端。

    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

    【讨论】:

    • 您好,感谢您的回复。我试过这段代码。服务器仍然说它没有收到文件。我开始怀疑我的服务器代码。但是 Postman 能够发送文件。
    • 我也有同样的问题,你找到方法来测试了吗?
    猜你喜欢
    • 1970-01-01
    • 2013-09-30
    • 2013-06-11
    • 2019-10-21
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多