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
своего проекта.