我已经看到了关于反应堆网络的示例,内容涉及如何使用多部分形式(https://github.com/reactor/reactor-netty/blob/89796a1839a1439a1800424e130515357a827392/src/test/java/reactor/netty/http/client/HttpClientTest.java#L337)发布文件
但是我找不到有关如何使用可解析多部分信息的react-netty编写服务器的任何信息。
netty似乎可以使用HttpPostRequestDecoder
类来做到这一点,但我看不到适合的地方...
我还看到InterfaceHttpData
是Attributes
和FileUpload
的父类,但是我看不到在哪里可以从请求中获取这些对象...
有人做过吗?有任何线索吗?
非常感谢
答案 0 :(得分:0)
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();
});