Vertx-Web 中处理文件上传

在 Web 应用中,上传文件是一个常用的功能。 本文简单介绍在 Vertx-Web 中如何处理文件上传。

在 Vertx-Web 中是通过 Route 来路由 HTTP 请求的, 每个 Route 的处理方法中都提供了一个 RoutingContext 的实例作为参数,在该类中的 fileUploads 方法为我们提供了从前端上传的文件的信息。 如下面代码展示的,

1
Set<FileUpload> uploads = ctx.fileUploads();

fileUploads 方法返回一个包含 FileUpload 对象的集合(为什么是集合?因为可以同时上传多个文件)。

拿到 FileUpload 对象后,我们就可以通过该类的 fileName 方法获取文件(上传时文件的名称),通过 contentType 获取文件类型,通过 size 方法获取文件的大小。

如:

1
2
3
4
5
6
for (FileUpload f: uploads) {
String name = f.fileName();
String type = f.contentType();
long length = f.size();
...
}

最后,我们就可以通过 Vertx 中提供的文件访问 API 来读取文件的内容,进而进行处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Buffer buffer = Buffer.buffer(length);

OpenOptions options = new OpenOptions();

vertx.fileSystem().open(f.uploadedFileName(), options, res -> {

if (res.succeeded()) {

AsyncFile uploadFile = res.result();

uploadFile.read(buffer, 0, 0l, length, res1 -> {

if (res1.succeeded()) {

.... // 对内容进行处理
}
});
}
}):

注意,示例代码中没有没有提供异常处理

本文标题:Vertx-Web 中处理文件上传

文章作者:Morning Star

发布时间:2020年09月03日 - 21:09

最后更新:2021年04月16日 - 15:04

原始链接:https://www.mls-tech.info/java/vertx-web-upload-file/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。