reactor-netty - 如何使用reactor-netty(没有Spring)接收分段文件上传?
问题描述
我已经看到有 reactor-netty 关于如何使用多部分形式发布文件的示例(https://github.com/reactor/reactor-netty/blob/89796a1839a1439a1800424e130515357a827392/src/test/java/reactor/netty/http/客户端/HttpClientTest.java#L337 )
但是我找不到任何关于如何使用可以解析多部分信息的 reactor-netty 编写服务器的信息。
似乎netty能够使用HttpPostRequestDecoder
类来做到这一点,但我看不出它适合什么......
我还看到InterfaceHttpData
了一个母类,Attributes
但是FileUpload
我看不到在哪里可以从请求中获取这些对象...
有没有人这样做过?有什么线索吗?
非常感谢
解决方案
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();
});
推荐阅读
- html - 使用angularjs从下拉列表中选择一个值时隐藏单选按钮
- python - 任务计划程序未从批处理文件运行 python 脚本,该脚本在手动启动时有效
- javascript - 使用 Javascript map() 函数返回 JSON 对象的子集
- html - 更改字体大小以使文本宽度适合父元素
- python - ValueError: no enough values to unpack (expected 2, got 0) python if elif else statement for matplotlib
- c# - 将长字符串编码和解码为短可读代码
- c# - 如何修复错误`exited with code 4` Build Any (x86 and x64) Winform Application
- javascript - 如何在 antd select 上添加分页?因为从接口获取数据是巨大的。所以我想实现分页
- python - Python 3.6 tkinter 说 GROOVE 没有定义
- google-cloud-platform - SyntaxError:位置参数跟随关键字参数 | 用于语音到文本的 Python 客户端