假设我有
Router router = Router.router(vertx);
router.route().handler(BodyHandler.create());
router.post("/").handler(ctx ->{
//body..
}
我知道Set<FileUpload> set = ctx.fileUploads();
会给我一套我的文件。我遇到的问题是,我实际上并没有得到这些文件——也就是说,如果s
是FileUpload
,那么类似InputStream f = s.getAsInputStream()
的东西就不存在了。在其他框架中,这是一种选择。有没有办法将文件作为输入流?
我过去使用过两步方法来访问文件内容:
- 使用
FileUpload.uploadedFileName()
获取上载的本地存储文件的路径 - 使用
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
});
})