Netty 4.x示例的文件上传

时间:2012-10-05 19:29:31

标签: file-upload netty httpserver

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

2 个答案:

答案 0 :(得分:1)

我使用netty-all:4.1.32。最后上传文件服务器

    // 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);
                }
            }
        }
    }

答案 1 :(得分:0)

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