如何从vertx中的文件中获取byte []

时间:2018-06-13 18:17:57

标签: java arrays file-upload byte vert.x

我正在尝试从一个文件中提取byte [],我将在后调用中的表单数据中收到该文件。但是,我没有找到任何有用的代码片段来帮助我获取byte []。以下是我正在尝试的代码

public static void main( String[] args )
{
        Vertx vertx =Vertx.vertx();
        HttpServer httpServer= vertx.createHttpServer() ;

        Router router=Router.router(vertx);
router.route().handler(BodyHandler.create().setUploadsDirectory("uploads"));

 router.post("/form").handler(ctx -> {
           ctx.response().putHeader("Content-Type", "text/plain");

            ctx.response().setChunked(true);
            MultiMap attributes = ctx.request().formAttributes();
            Set<io.vertx.ext.web.FileUpload> uploads = ctx.fileUploads();
            ctx.response().end();
      }

  httpServer
     .requestHandler(router::accept)
     .listen(8091);
    } 

此处文件将上传到uploads文件夹中的服务器上。但是,我不想在服务器上传文件,而是希望文件的byte []传输到不同的服务进行上传。所以,如果我评论这一行 。router.route()处理(BodyHandler.create()setUploadsDirectory( “上载”)。); 文件未上传到系统。所以,如果我没有在服务器上传文件,现在有人可以告诉我如何获取文件的byte []。

1 个答案:

答案 0 :(得分:2)

FileUpload对象为您提供上传文件的路径。您可以使用Vert.x FileSystem API加载其内容:

vertx.fileSystem().readFile(fileUpload.uploadedFileName(), ar -> {
  if (ar.succeeded()) {
    byte[] content = ar.result().getBytes();
    // use the content
  } else {
    // deal with failure
  }
});