Java Vertx从多部分表单数据中提取文件



假设我有

Router router = Router.router(vertx);
router.route().handler(BodyHandler.create());
router.post("/").handler(ctx ->{
//body..
}

我知道Set<FileUpload> set = ctx.fileUploads();会给我一套我的文件。我遇到的问题是,我实际上并没有得到这些文件——也就是说,如果sFileUpload,那么类似InputStream f = s.getAsInputStream()的东西就不存在了。在其他框架中,这是一种选择。有没有办法将文件作为输入流?

我过去使用过两步方法来访问文件内容:

  1. 使用FileUpload.uploadedFileName()获取上载的本地存储文件的路径
  2. 使用FileSystem.readFile(String path)的某个变体,该变体生成Buffer类型,该类型包含对原始字节的引用

这个Rx-ified版本看起来像这样:

FileSystem fileSystem = ctx.vertx().fileSystem();
Router router = Router.router(vertx);
router.route().handler(BodyHandler.create());
router.post("/").handler(ctx -> {
ctx.fileUploads()
.map({ fileUpload ->
return fileSystem.rxReadFile(fileUpload.uploadedFileName())
.map({ buffer ->
return buffer.bytes;  // <-- here's the binary content
});
})

相关内容

  • 没有找到相关文章

最新更新