簡體   English   中英

使用Apache Commons File Upload解析multipart / form-data

[英]Parsing multipart/form-data using Apache Commons File Upload

Apache Commons File Upload包是否提供通用接口來通過InputStream流式解析multipart/form-data塊,附加Array<Byte> ,還是通過任何其他通用流接口?

我知道他們有一個流API,但這個例子只告訴你如何通過ServletFileUpload來做到這ServletFileUpload ,我認為必須特定於Servlet

如果沒有,JVM中是否有任何其他替代框架可以讓您完成此操作? 可悲的是,我使用的框架Spray.io似乎沒有提供這樣做的方法。

bayou.io有一個通用的MultipartParser

您可能需要一些適配器才能使用它,因為它有自己的AsyncByteSource接口。

以下示例顯示如何與InputStream同步使用解析器

    String msg = ""
        //+ "preamble\r\n"
        +"--boundary\r\n"
        +"Head1: Value1\r\n"
        +"Head2: Value2\r\n"
        +"\r\n"
        +"body.body.body.body."

        +"\r\n--boundary\r\n"
        +"Head1: Value1\r\n"
        +"Head2: Value2\r\n"
        +"\r\n"
        +"body.body.body.body."

        +"\r\n--boundary--"
        + "epilogue";

    InputStream is = new ByteArrayInputStream(msg.getBytes("ISO-8859-1"));
    ByteSource byteSource = new InputStream2ByteSource(is, 1024);
    MultipartParser parser = new MultipartParser(byteSource, "boundary");
    while(true)
    {
        try
        {
            MultipartPart part = parser.getNextPart().sync();   // async -> sync
            System.out.println("== part ==");
            System.out.println(part.headers());
            ByteSource body = part.body();
            InputStream stream = new ByteSource2InputStream(body, Duration.ofSeconds(1));
            drain(stream);
        }
        catch (End end) // control exception from getNextPart()
        {
            System.out.println("== end of parts ==");
            break;
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM