如何从NETTY 4中的发布请求中获取文件数据?

机械师

我可以将此POST请求和一些jpg文件发送到我的服务器

POST /formpostmultipart HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 621551
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2031.2 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryY1m4URqQ5ydALOrQ
Referer: http://localhost:8080/upload
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4

我必须怎么做才能从此请求中获取文件并保存到磁盘?ps对不起我的英语不好

机械师

我用HttpPostRequestDecoder解决了这个问题。例如

if (request.getMethod().equals(HttpMethod.POST)) {
                    decoder = new HttpPostRequestDecoder(dataFactory, request);
                    decoder.setDiscardThreshold(0);
if (decoder != null) {
        if (msg instanceof HttpContent) {
            HttpContent chunk = (HttpContent) msg;
            decoder.offer(chunk);
            readChunk(channelHandlerContext);
            if (chunk instanceof LastHttpContent) {
                resetPostRequestDecoder();
            }
        }
    }
private void readChunk(ChannelHandlerContext ctx) throws IOException {
    while (decoder.hasNext()) {
        InterfaceHttpData data = decoder.next();
        if (data != null) {
            try {
                switch (data.getHttpDataType()) {
                    case Attribute:
                        break;
                    case FileUpload:    
                        FileUpload fileUpload = (FileUpload) data;
                        File file = new File("C:\\test\\" + fileUpload.getName);
                        if (!file.exists()) {
                            file.createNewFile();
                        }
                        try (FileChannel inputChannel = new FileInputStream(fileUpload.getFile()).getChannel(); FileChannel outputChannel = new FileOutputStream(file).getChannel()) {
                            outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
                            sendSimpleResponse(ctx,CREATED,"file name: " +file.getAbsolutePath());
                        }
                        break;
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                data.release();
            }
        }
    }
}

private void resetPostRequestDecoder() {
    request = null;
    decoder.destroy();
    decoder = null;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Symfony2.8。如何从发布请求中获取数据

来自分类Dev

如何从Django中的请求获取所有发布数据?

来自分类Dev

如何获取目录中的文件数组

来自分类Dev

如何从 CMD 中获取文件数据:dir>filename.txt 文本文件?C

来自分类Dev

Python:如何确保程序仅从sys.stdin中获取文件数据?

来自分类Dev

如何在Netty的Mina中重现IoSession

来自分类Dev

如何在 Netty 通道中调度 HttpRequest?

来自分类Dev

如何在 Blazor/Razor 中获取事件数据

来自分类Dev

如何使用Apache Camel获取目录中的文件数?

来自分类Dev

使用Symfony2,如何从请求中获取Ajax发布数据?

来自分类Dev

如何从asp.net-webpages中的Ajax请求在服务器端获取发布的文件?

来自分类Dev

如何使用Laravel和Slim从发布请求中获取文件属性

来自分类Dev

如何在Netty 4中处理PING / PONG帧?

来自分类Dev

如何修复Netty 4中导致IllegalArgumentException的AttributeKey

来自分类Dev

如何在表中插入JSON文件数据

来自分类Dev

如何在PHP中读取多个CSV文件数据

来自分类Dev

如何修复此代码中的 C 文件数据读取

来自分类Dev

如何使用Netty关闭AsyncHttpClient以获取异步Http请求?

来自分类Dev

如何在Yesod中获取发布数据?

来自分类Dev

如何以不太冗长的方式发布JSON格式的请求以从R中的URL获取JSON数据到data.frame中?

来自分类Dev

如何以与数据写入文件相同的顺序从flink中的文件数据创建数据流?

来自分类Dev

如何从JQuery Ajax请求中获取“数据”

来自分类Dev

如何从失败的forkJoin请求中获取数据?

来自分类Dev

如何从请求 Nodejs 中获取数据

来自分类Dev

如何从 HTTP 请求中获取正确的数据

来自分类Dev

如何从POST请求中获取数据

来自分类Dev

如何从节点“请求”模块中获取数据

来自分类Dev

如何从CycleJS中的POST请求获取文件

来自分类Dev

如何从CycleJS中的POST请求获取文件

Related 相关文章

  1. 1

    Symfony2.8。如何从发布请求中获取数据

  2. 2

    如何从Django中的请求获取所有发布数据?

  3. 3

    如何获取目录中的文件数组

  4. 4

    如何从 CMD 中获取文件数据:dir>filename.txt 文本文件?C

  5. 5

    Python:如何确保程序仅从sys.stdin中获取文件数据?

  6. 6

    如何在Netty的Mina中重现IoSession

  7. 7

    如何在 Netty 通道中调度 HttpRequest?

  8. 8

    如何在 Blazor/Razor 中获取事件数据

  9. 9

    如何使用Apache Camel获取目录中的文件数?

  10. 10

    使用Symfony2,如何从请求中获取Ajax发布数据?

  11. 11

    如何从asp.net-webpages中的Ajax请求在服务器端获取发布的文件?

  12. 12

    如何使用Laravel和Slim从发布请求中获取文件属性

  13. 13

    如何在Netty 4中处理PING / PONG帧?

  14. 14

    如何修复Netty 4中导致IllegalArgumentException的AttributeKey

  15. 15

    如何在表中插入JSON文件数据

  16. 16

    如何在PHP中读取多个CSV文件数据

  17. 17

    如何修复此代码中的 C 文件数据读取

  18. 18

    如何使用Netty关闭AsyncHttpClient以获取异步Http请求?

  19. 19

    如何在Yesod中获取发布数据?

  20. 20

    如何以不太冗长的方式发布JSON格式的请求以从R中的URL获取JSON数据到data.frame中?

  21. 21

    如何以与数据写入文件相同的顺序从flink中的文件数据创建数据流?

  22. 22

    如何从JQuery Ajax请求中获取“数据”

  23. 23

    如何从失败的forkJoin请求中获取数据?

  24. 24

    如何从请求 Nodejs 中获取数据

  25. 25

    如何从 HTTP 请求中获取正确的数据

  26. 26

    如何从POST请求中获取数据

  27. 27

    如何从节点“请求”模块中获取数据

  28. 28

    如何从CycleJS中的POST请求获取文件

  29. 29

    如何从CycleJS中的POST请求获取文件

热门标签

归档