如何解决Java Vertx从多部分表单数据中提取文件
假设我有
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的版本看起来像这样:
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
});
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。