当前版本:jdk1.8、vert.x 4.2.4
1、声明
当前内容主要为使用Vert.x实现http文件上传和下载,内容参考:官方文档
2、基本上传下载demo
public class MainVerticle extends AbstractVerticle {@Overridepublic void start(Promise startPromise) throws Exception { // Create a Router Router router = Router.router(vertx); // 处理文件上传 router.route("/upload").handler(context->{ HttpServerRequest request = context.request(); request.setExpectMultipart(true); request.uploadHandler(upload->{ System.out.println("文件上传成功!"); upload.streamToFileSystem("C:\Users\admin\Desktop\upload\" + upload.filename()); }); context.json(new JsonObject().put("status", 200).put("msg", "upload successed!")); }); // 实现文件下载 router.route("/download").handler(context->{ HttpServerRequest request = context.request(); System.out.println("文件下载成功!"); request.response() .putHeader("content-type", "application/octet-stream") .sendFile("C:\Users\admin\Desktop\nimbus.log"); }); // 执行请求操作 router.route("/hello").method(HttpMethod.GET).handler(context->{ context.json(new JsonObject("{"status":200,"msg":"ok"}")); }); // Create the HTTP server vertx.createHttpServer() // Handle every request using the router .requestHandler(router) // Start listening .listen(8888) // Print the port .onSuccess(server -> System.out.println( "HTTP server started on port " + server.actualPort() ) );}}
文件下载:这里直接使用response写出二进制格式(application/octet-stream)文件,如果不写出默认为content-type:text/html格式
这里的文件下载:upload.streamToFileSystem直接将上传的文件存放到特定位置即可(这里默认使用一个存在的文件即可)
关于启动部分参考:基本的Demo
3、测试
1、文件下载
2.测试文件上传
文件上传下载测试成功!