Netty 4.x示例的文件上传

问题描述 投票:1回答:2

如何使用Netty 4.x上传http文件服务器?对于3.x是一个示例,对于4.x示例仅用于提供静态文件。

file-upload netty httpserver
2个回答
1
投票

我使用netty-all:4.1.32.Final做上传文件服务器

    // Post request
    private void formParams(HttpServerRequest request, ByteBuf content, Map<String, String> formParams, Map<String, MemoryFileUpload> fileParams) {
        if (content != null) {
            // POST Params
            FullHttpRequest dhr = new DefaultFullHttpRequest(request.version(), request.method(), request.uri(), content, request.requestHeaders(), EmptyHttpHeaders.INSTANCE);
            HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(new DefaultHttpDataFactory(false), dhr);
            List<InterfaceHttpData> postData = postDecoder.getBodyHttpDatas();
            for (InterfaceHttpData data : postData) {
                // General Post Content
                if (data.getHttpDataType() == InterfaceHttpData.HttpDataType.Attribute) {
                    MemoryAttribute attribute = (MemoryAttribute) data;
                    formParams.put(attribute.getName(), attribute.getValue());
                }
                // Upload
                else if (data.getHttpDataType() == InterfaceHttpData.HttpDataType.FileUpload) {
                    MemoryFileUpload fileUpload = (MemoryFileUpload) data;
                    fileParams.put(fileUpload.getName(), fileUpload);
                }
            }
        }
    }

0
投票

HttpPostRequestDecoder尚未移植到4.0.0.x.所以没有对它的支持。它在待办事项列表中。

© www.soinside.com 2019 - 2024. All rights reserved.