java 如何让StaticHandler下载所有Mime类型?

xcitsw88  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(126)

我有一个基本的垂直服务文件从data文件夹:

public class Server extends AbstractVerticle
{ 
  @Override
  public void start() throws Exception {
    Router router = Router.router(vertx);
    router.route().handler(BodyHandler.create());
    router.route("/static/*").handler(StaticHandler.create("data"));
    vertx.createHttpServer().requestHandler(router).listen(8080);
  }
}

服务器将文件下载为.docx,但在浏览器中渲染所有图像或PDF。
如何告诉我的StaticHandler下载所有MIME类型?
我可以以某种方式为整个StaticHandler全局设置Content-Disposition: attachment头吗?或者有一些挂钩,我可以设置它依赖于路由上下文?

zvokhttg

zvokhttg1#

可以在路由定义上设置多个处理程序。在/static/*路由上,设置一个处理程序,当响应准备好发送时,它会添加一个额外的头:

public class Server extends AbstractVerticle
{ 
  @Override
  public void start() throws Exception {
    Router router = Router.router(vertx);
    router.route().handler(BodyHandler.create());
    router.route("/static/*")
        .handler(rc -> {
            HttpServerResponse resp = rc.response();
            resp.headersEndHandler(v-> {
              // perhaps checks response status code before adding the header
              resp.put(io.vertx.core.http.HttpHeaders.CONTENT_DISPOSITION, "attachment");
            });
        })
        .handler(StaticHandler.create("data"));
    vertx.createHttpServer().requestHandler(router).listen(8080);
  }
}

相关问题