1

邮递员示例

  fun sendFileToMatch(path:String){
    val client = WebClient.create(vertx);
    var form = MultipartForm.create()
      .binaryFileUpload("image","imageName" , path, "image/jpeg")

    client.post(8888, "localhost", "/search?")
      .putHeader("content-type", "multipart/form-data")
      .sendMultipartForm(form) { }
  }

当我运行代码显示错误请求时,我已经输入了关键的“图像”并发送了文件部分图像

4

1 回答 1

0

TL;DR - 您的客户端代码看起来不错。

唯一可疑的部分是它path本身,因为您没有指定如何在代码中准确获取它,并且您没有指定如何处理来自服务器的响应:您只是{}在示例中执行

不过,这是一个完整的示例供您参考:

        val vertx = Vertx.vertx()

    val router = Router.router(vertx)

    router.route().handler(BodyHandler.create());
    router.post("/search").handler {
        val uploads: Set<FileUpload> = it.fileUploads()

        uploads.forEach { upload ->
            println(upload.name()) // "image"
            println(upload.fileName()) // "imageName"
            println(upload.size()) // 42537
        }

        it.response().end("OK!")
    }

    vertx.createHttpServer().requestHandler(router)
            .listen(8888)

    // We read the PNG file from /resources
    val path = object {}.javaClass.getResource("5EWx9.png").path
    val form = MultipartForm.create()
            .binaryFileUpload("image","imageName" , path, "image/png")

    val client = WebClient.create(vertx);
    client.post(8888, "localhost", "/search?")
            .putHeader("content-type", "multipart/form-data")
            .sendMultipartForm(form) {
                if (it.succeeded()) {
                    println(it.result().bodyAsString()) // "OK!"
                }
                else {
                    println(it.cause())
                }
            }

作为要上传的文件,我使用了您提供的PostmanExample/resources ,这是一个 PNG 图像,我将其放在我的项目目录中。

于 2020-08-07T15:50:03.967 回答