Я хочу отправить изображение части файла с помощью Vertx, я хочу воспроизвести этот случай в коде, таком как Postman - PullRequest
1 голос
/ 06 августа 2020

PostmanExample

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

когда я запускаю код показать неверный запрос, я поставил точно ключ «изображение» и отправил изображение части файла

1 Ответ

0 голосов
/ 07 августа 2020

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 , который вы предоставили, это изображение PNG, которое я поместил в каталог /resources своего проекта.

...