C#中是否有任何multipart / form-data解析器 - (NO ASP)

时间:2010-10-07 09:58:30

标签: c# parsing multipartform-data

我只是想编写一个多部分解析器,但事情变得复杂,并且想知道是否有人知道C#中的现成解析器!

为了说清楚,我正在编写自己的“小”http服务器,并且需要解析多部分表单数据!

提前致谢, Gohlool

5 个答案:

答案 0 :(得分:27)

我开源了一个C#Http表单解析器here

这比在CodePlex上提到的另一个稍微灵活一些,因为您可以将它用于Multipart和非Multipart form-data,并且它还为您提供格式为{{1}的其他表单参数对象。

可以使用如下:

<强>非多

Dictionary

<强>多

public void Login(Stream stream)
{
    string username = null;
    string password = null;

    HttpContentParser parser = new HttpContentParser(stream);
    if (parser.Success)
    {
        username = HttpUtility.UrlDecode(parser.Parameters["username"]);
        password = HttpUtility.UrlDecode(parser.Parameters["password"]);
    }
}

答案 1 :(得分:7)

我遇到了一些基于字符串解析的解析器问题,特别是对于大文件我发现它会耗尽内存而无法解析二进制数据。

为了解决这些问题,我已经开放了我自己尝试使用C#multipart / form-data解析器here

有关详细信息,请参阅我的回答here

答案 2 :(得分:1)

查看新的MultipartStreamProvider及其子类(即MultipartFormDataStreamProvider)。如果没有任何内置实现适合您的用例,您也可以创建自己的实现。

答案 3 :(得分:0)

我有一个类似的问题,我最近解决了感谢Anthony在http://antscode.blogspot.com/的多部分解析器。

Uploading file from Flex to WCF REST Stream issues (how to decode multipart form post in REST WS)

答案 4 :(得分:0)

使用Core现在可以使用HttpContext.Request.Form访问IFormCollection。

保存图片的示例:

        Microsoft.AspNetCore.Http.IFormCollection form;
        form = ControllerContext.HttpContext.Request.Form; 

        using (var fileStream = System.IO.File.Create(strFile))
        {
            form.Files[0].OpenReadStream().Seek(0, System.IO.SeekOrigin.Begin);
            form.Files[0].OpenReadStream().CopyTo(fileStream);
        }