一个 C# Http Multipart/form-data 解析器,可正确处理二进制数据和非常大的文件。
| Release Notes | NuGet (stable) | MyGet (prerelease) |
|---|---|---|
The Http Multipart Parser does it exactly what it claims on the tin: parses multipart/form-data. This particular parser is well suited to parsing large data from streams as it doesn't attempt to read the entire stream at once and procudes a set of streams for file data.
The easiest way to include HttpMultipartParser in your project is by adding the nuget package to your project:
PM> Install-Package HttpMultipartParser.NET Standard 2.0 and .NET 8.0.MultipartFormDataParser.Parse (or it's asynchronous counterpart MultipartFormDataParser.ParseAsync).parser.Run() (or it's asynchronous counterpart parser.RunAsync())// stream:
-----------------------------41952539122868
Content-Disposition: form-data; name="username"
example
-----------------------------41952539122868
Content-Disposition: form-data; name="email"
[email protected]
-----------------------------41952539122868
Content-Disposition: form-data; name="files[]"; filename="photo1.jpg"
Content-Type: image/jpeg
ExampleBinaryData012031203
-----------------------------41952539122868--…// stream:
-----------------------------41952539122868
Content-Disposition: form-data; name="checkbox"
likes_cake
-----------------------------41952539122868
Content-Disposition: form-data; name="checkbox"
likes_cookies
-----------------------------41952539122868--// ===== Simple Parsing ====
// You can parse synchronously:
var parser = MultipartFormDataParser.Parse(stream);
// Or you can parse asynchronously:
var parser = await MultipartFormDataParser.ParseAsync(stream).ConfigureAwait(false);
// From this point the data is parsed, we can retrieve the
// form data from the GetParameterValues method
var checkboxResponses = parser.GetParameterValues("checkbox");
foreach(var parameter in checkboxResponses)
{
Console.WriteLine("Parameter {0} is {1}", parameter.Name, parameter.Data)
}// stream:
-----------------------------41111539122868
Content-Disposition: form-data; name="files[]"; filename="photo1.jpg"
Content-Type: image/jpeg
MoreBinaryData
-----------------------------41111539122868
Content-Disposition: form-data; name="files[]"; filename="photo2.jpg"
Content-Type: image/jpeg
ImagineLotsOfBinaryData
-----------------------------41111539122868--…This project is licensed under MIT.
暂无开放 Issues,或尚未同步最近议题。