首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用reactor-netty (没有Spring)接收分块文件上传?

如何使用reactor-netty (没有Spring)接收分块文件上传?
EN

Stack Overflow用户
提问于 2019-04-30 17:23:53
回答 1查看 543关注 0票数 0

我已经看到了reactor-netty的例子,关于如何使用多部分表单(https://github.com/reactor/reactor-netty/blob/89796a1839a1439a1800424e130515357a827392/src/test/java/reactor/netty/http/client/HttpClientTest.java#L337)发布文件

但是我找不到任何关于如何使用reactor-netty编写可以解析多部分信息的服务器的信息。

看起来netty可以使用HttpPostRequestDecoder类来做这件事,但我看不出它适合在哪里……

我还看到InterfaceHttpDataAttributesFileUpload的母类,但我不知道从哪里可以从请求中获得这些对象……

有没有人这样做过?有什么线索吗?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2019-07-03 18:13:33

代码语言:javascript
复制
request.receive()
  .aggregate()
  .flatMap(byteBuf -> {
    FullHttpRequest dhr = new DefaultFullHttpRequest(request.version(), request.method(), request.uri(), byteBuf, request.requestHeaders(), EmptyHttpHeaders.INSTANCE);
    HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(new DefaultHttpDataFactory(false), dhr, CharsetUtil.UTF_8);
    // loop data
    for (InterfaceHttpData data : postDecoder.getBodyHttpDatas()) {
        // attribute
        if (data.getHttpDataType() == InterfaceHttpData.HttpDataType.Attribute) {
            // (MemoryAttribute) data
        }
        // upload
        else if (data.getHttpDataType() == InterfaceHttpData.HttpDataType.FileUpload) {
            // (MemoryFileUpload) data
        }
    }
    postDecoder.destroy();
    dhr.release();
  });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55917790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档