@@ -146,12 +146,15 @@ private MultipartFormDataParser()
146146 /// <param name="binaryMimeTypes">
147147 /// List of mimetypes that should be detected as file.
148148 /// </param>
149+ /// <param name="ignoreInvalidParts">
150+ /// By default the parser will throw an exception if it encounters an invalid part. Set this to true to ignore invalid parts.
151+ /// </param>
149152 /// <returns>
150153 /// A new instance of the <see cref="MultipartFormDataParser"/> class.
151154 /// </returns>
152- public static MultipartFormDataParser Parse ( Stream stream , Encoding encoding , int binaryBufferSize = DefaultBufferSize , string [ ] binaryMimeTypes = null )
155+ public static MultipartFormDataParser Parse ( Stream stream , Encoding encoding , int binaryBufferSize = DefaultBufferSize , string [ ] binaryMimeTypes = null , bool ignoreInvalidParts = false )
153156 {
154- return Parse ( stream , null , encoding , binaryBufferSize , binaryMimeTypes ) ;
157+ return Parse ( stream , null , encoding , binaryBufferSize , binaryMimeTypes , ignoreInvalidParts ) ;
155158 }
156159
157160 /// <summary>
@@ -175,13 +178,16 @@ public static MultipartFormDataParser Parse(Stream stream, Encoding encoding, in
175178 /// <param name="binaryMimeTypes">
176179 /// List of mimetypes that should be detected as file.
177180 /// </param>
181+ /// <param name="ignoreInvalidParts">
182+ /// By default the parser will throw an exception if it encounters an invalid part. Set this to true to ignore invalid parts.
183+ /// </param>
178184 /// <returns>
179185 /// A new instance of the <see cref="MultipartFormDataParser"/> class.
180186 /// </returns>
181- public static MultipartFormDataParser Parse ( Stream stream , string boundary = null , Encoding encoding = null , int binaryBufferSize = DefaultBufferSize , string [ ] binaryMimeTypes = null )
187+ public static MultipartFormDataParser Parse ( Stream stream , string boundary = null , Encoding encoding = null , int binaryBufferSize = DefaultBufferSize , string [ ] binaryMimeTypes = null , bool ignoreInvalidParts = false )
182188 {
183189 var parser = new MultipartFormDataParser ( ) ;
184- parser . ParseStream ( stream , boundary , encoding , binaryBufferSize , binaryMimeTypes ) ;
190+ parser . ParseStream ( stream , boundary , encoding , binaryBufferSize , binaryMimeTypes , ignoreInvalidParts ) ;
185191 return parser ;
186192 }
187193
@@ -202,12 +208,15 @@ public static MultipartFormDataParser Parse(Stream stream, string boundary = nul
202208 /// <param name="binaryMimeTypes">
203209 /// List of mimetypes that should be detected as file.
204210 /// </param>
211+ /// <param name="ignoreInvalidParts">
212+ /// By default the parser will throw an exception if it encounters an invalid part. Set this to true to ignore invalid parts.
213+ /// </param>
205214 /// <returns>
206215 /// A new instance of the <see cref="MultipartFormDataParser"/> class.
207216 /// </returns>
208- public static Task < MultipartFormDataParser > ParseAsync ( Stream stream , Encoding encoding , int binaryBufferSize = DefaultBufferSize , string [ ] binaryMimeTypes = null )
217+ public static Task < MultipartFormDataParser > ParseAsync ( Stream stream , Encoding encoding , int binaryBufferSize = DefaultBufferSize , string [ ] binaryMimeTypes = null , bool ignoreInvalidParts = false )
209218 {
210- return ParseAsync ( stream , null , encoding ) ;
219+ return ParseAsync ( stream , null , encoding , DefaultBufferSize , null , ignoreInvalidParts ) ;
211220 }
212221
213222 /// <summary>
@@ -231,13 +240,16 @@ public static Task<MultipartFormDataParser> ParseAsync(Stream stream, Encoding e
231240 /// <param name="binaryMimeTypes">
232241 /// List of mimetypes that should be detected as file.
233242 /// </param>
243+ /// <param name="ignoreInvalidParts">
244+ /// By default the parser will throw an exception if it encounters an invalid part. Set this to true to ignore invalid parts.
245+ /// </param>
234246 /// <returns>
235247 /// A new instance of the <see cref="MultipartFormDataParser"/> class.
236248 /// </returns>
237- public static async Task < MultipartFormDataParser > ParseAsync ( Stream stream , string boundary = null , Encoding encoding = null , int binaryBufferSize = DefaultBufferSize , string [ ] binaryMimeTypes = null )
249+ public static async Task < MultipartFormDataParser > ParseAsync ( Stream stream , string boundary = null , Encoding encoding = null , int binaryBufferSize = DefaultBufferSize , string [ ] binaryMimeTypes = null , bool ignoreInvalidParts = false )
238250 {
239251 var parser = new MultipartFormDataParser ( ) ;
240- await parser . ParseStreamAsync ( stream , boundary , encoding , binaryBufferSize , binaryMimeTypes ) . ConfigureAwait ( false ) ;
252+ await parser . ParseStreamAsync ( stream , boundary , encoding , binaryBufferSize , binaryMimeTypes , ignoreInvalidParts ) . ConfigureAwait ( false ) ;
241253 return parser ;
242254 }
243255
@@ -265,9 +277,12 @@ public static async Task<MultipartFormDataParser> ParseAsync(Stream stream, stri
265277 /// <param name="binaryMimeTypes">
266278 /// List of mimetypes that should be detected as file.
267279 /// </param>
268- private void ParseStream ( Stream stream , string boundary , Encoding encoding , int binaryBufferSize , string [ ] binaryMimeTypes )
280+ /// <param name="ignoreInvalidParts">
281+ /// By default the parser will throw an exception if it encounters an invalid part. Set this to true to ignore invalid parts.
282+ /// </param>
283+ private void ParseStream ( Stream stream , string boundary , Encoding encoding , int binaryBufferSize , string [ ] binaryMimeTypes , bool ignoreInvalidParts )
269284 {
270- var streamingParser = new StreamingMultipartFormDataParser ( stream , boundary , encoding ?? Encoding . UTF8 , binaryBufferSize , binaryMimeTypes ) ;
285+ var streamingParser = new StreamingMultipartFormDataParser ( stream , boundary , encoding ?? Encoding . UTF8 , binaryBufferSize , binaryMimeTypes , ignoreInvalidParts ) ;
271286 streamingParser . ParameterHandler += parameterPart => _parameters . Add ( parameterPart ) ;
272287
273288 streamingParser . FileHandler += ( name , fileName , type , disposition , buffer , bytes , partNumber , additionalProperties ) =>
@@ -310,9 +325,12 @@ private void ParseStream(Stream stream, string boundary, Encoding encoding, int
310325 /// <param name="binaryMimeTypes">
311326 /// List of mimetypes that should be detected as file.
312327 /// </param>
313- private async Task ParseStreamAsync ( Stream stream , string boundary , Encoding encoding , int binaryBufferSize , string [ ] binaryMimeTypes )
328+ /// <param name="ignoreInvalidParts">
329+ /// By default the parser will throw an exception if it encounters an invalid part. Set this to true to ignore invalid parts.
330+ /// </param>
331+ private async Task ParseStreamAsync ( Stream stream , string boundary , Encoding encoding , int binaryBufferSize , string [ ] binaryMimeTypes , bool ignoreInvalidParts )
314332 {
315- var streamingParser = new StreamingMultipartFormDataParser ( stream , boundary , encoding ?? Encoding . UTF8 , binaryBufferSize , binaryMimeTypes ) ;
333+ var streamingParser = new StreamingMultipartFormDataParser ( stream , boundary , encoding ?? Encoding . UTF8 , binaryBufferSize , binaryMimeTypes , ignoreInvalidParts ) ;
316334 streamingParser . ParameterHandler += parameterPart => _parameters . Add ( parameterPart ) ;
317335
318336 streamingParser . FileHandler += ( name , fileName , type , disposition , buffer , bytes , partNumber , additionalProperties ) =>
0 commit comments