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

原文 标签 java scala jvm multipartform-data apache-commons-fileupload

Apache Commons File Upload 包是否提供通用接口(interface)来进行流解析multipart/form-data block 通过 InputStream , 附加 Array<Byte> ,或通过任何其他通用流接口(interface)?

我知道他们有一个流式 API,但该示例仅向您展示如何通过 ServletFileUpload 执行此操作。 ,我认为它必须特定于 Servlet .

如果没有,JVM 中是否还有其他替代框架可以让您做到这一点?可悲的是,我正在使用的框架 Spray.io 似乎没有提供一种方法来做到这一点。

最佳答案

bayou.io有一个通用的 MultipartParser

您可能需要一些适配器才能使用它,因为它有自己的
Async
ByteSource
接口(interface)。

下面的例子展示了如何与 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;
        }
    }

关于java - 使用 Apache Commons File Upload 解析 multipart/form-data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30387603/

相关文章:

java - SBT Scala猴子补丁库

java - Array map() 期间令人费解的隐式转换

java - 解释JVM方法调用说明

java - 为什么要重绘我的画时repaint()不起作用?

java - 即使我将 boolean 值设置为自动为假,如果语句不起作用

java - URLConnection超时错误在本地有效,但在开发服务器上无效

java - 在Java中的现有套接字上创建未连接的SSLSocket

scala - Scala中的提升功能

jvm - 如何列出-Xlog的语法和可用标签

performance - JVM 收集时间是否随 JVM RAM 大小呈指数增长?