1

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

4

2 回答 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);
                }
            }
        }
    }
于 2019-03-15T05:03:02.780 回答
0

HttpPostRequestDecoder 尚未移植到 4.0.0.x。所以不支持它atm。它在待办事项清单上。

于 2012-10-09T06:43:06.640 回答