code: private void doUpload(final Message<JsonObject> message) {
      final String id = UUID.randomUUID().toString();
      final File modRoot = new File(TEMP_DIR, "vertx-zip-mods");
      vertx.fileSystem().mkdir(modRoot.getAbsolutePath(), true, new Handler<AsyncResult<Void>>() {
        @Override
        public void handle(AsyncResult<Void> result) {
          if (result.failed()) {
            message.reply(new JsonObject().putString("status", "error").putString("message", "Failed to create upload file."));
          } else {
            File modZip = new File(modRoot, id + ".zip");
            modZip.deleteOnExit();
            vertx.fileSystem().open(modZip.getAbsolutePath(), new Handler<AsyncResult<AsyncFile>>() {
              @Override
              public void handle(AsyncResult<AsyncFile> result) {
                if (result.failed()) {
                  message.reply(new JsonObject().putString("status", "error").putString("message", "Failed to create upload file."));
                } else {
                  handleUpload(result.result(), id, new Handler<AsyncResult<Void>>() {
                    @Override
                    public void handle(AsyncResult<Void> result) {
                      if (result.failed()) {
                        message.reply(new JsonObject().putString("status", "error").putString("message", "Failed to register upload handler."));
                      } else {
                        message.reply(new JsonObject().putString("status", "ok").putString("id", id));
                      }
                    }
                  });
                }
              }
            });
          }
        }
      });
    }
docs: Uploads a file.