关于vert.x流式接收文件

发布于 2022-09-06 12:33:38 字数 1266 浏览 17 评论 0

当前基于vert.x找到一个流式接收文件的例子(下面的代码可能不是特别严谨,我只是用来测试下流式接收。),但是又来了一个问题,当前vert.x这种异步编程框架在rest的处理里面是不能阻塞的吧?

我下面这个router里的rest接收的文件可能很大,这个rest请求会阻塞其他的rest吗?

// rawbinary

    router.route(HttpMethod.POST, "/upload").handler(routingContext -> {
        String length = routingContext.request().headers().get("Content-Length");
        System.out.println("Content-Length: " +length);
        // 限制Content-Length大小
        // To do
        routingContext.request().handler(buffer -> {
            System.out.println("I have received a chunk of the body of length " + buffer.length(
            ));
            FileOutputStream fos = null;
            // 开一个流写文件
            try {

                fos = new FileOutputStream(new File("D://aim_upload1//"+ "test.txt"),true);
                fos.write(buffer.getBytes(),0,buffer.length());
                fos.flush();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (fos != null) {
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我不吻晚风 2022-09-13 12:33:38
routingContext.request().handler(buffer -> {

你好博主,我代码到这里进不进去 是什么原因?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文