public MultipartFormDataParser(Stream stream, string boundary, Encoding encoding, int binaryBufferSize)
{
Files = new List<FilePart>();
Parameters = new List<ParameterPart>();
var streamingParser = new StreamingMultipartFormDataParser(stream, boundary, encoding, binaryBufferSize);
streamingParser.ParameterHandler += parameterPart => Parameters.Add(parameterPart);
streamingParser.FileHandler += (name, fileName, type, disposition, buffer, bytes) =>
{
if (Files.Count == 0 || name != Files[Files.Count - 1].Name)
{
Files.Add(new FilePart(name, fileName, new MemoryStream(), type, disposition));
}
Files[Files.Count - 1].Data.Write(buffer, 0, bytes);
};
streamingParser.Run();
// Reset all the written memory streams so they can be read.
foreach (var file in Files)
{
file.Data.Position = 0;
}
}