/aspnetcore/mvc/models/file-uploads/samples/3.x/SampleApp/Utilities/MultipartRequestHelper.cs
https://github.com/aspnet/AspNetCore.Docs · C# · 53 lines · 42 code · 7 blank · 4 comment · 11 complexity · 5941cf54e3dc829fdce5ca06bfccd554 MD5 · raw file
- using System;
- using System.IO;
- using Microsoft.Net.Http.Headers;
- namespace SampleApp.Utilities
- {
- public static class MultipartRequestHelper
- {
- // Content-Type: multipart/form-data; boundary="----WebKitFormBoundarymx2fSWqWSd0OxQqq"
- // The spec at https://tools.ietf.org/html/rfc2046#section-5.1 states that 70 characters is a reasonable limit.
- public static string GetBoundary(MediaTypeHeaderValue contentType, int lengthLimit)
- {
- var boundary = HeaderUtilities.RemoveQuotes(contentType.Boundary).Value;
- if (string.IsNullOrWhiteSpace(boundary))
- {
- throw new InvalidDataException("Missing content-type boundary.");
- }
- if (boundary.Length > lengthLimit)
- {
- throw new InvalidDataException(
- $"Multipart boundary length limit {lengthLimit} exceeded.");
- }
- return boundary;
- }
- public static bool IsMultipartContentType(string contentType)
- {
- return !string.IsNullOrEmpty(contentType)
- && contentType.IndexOf("multipart/", StringComparison.OrdinalIgnoreCase) >= 0;
- }
- public static bool HasFormDataContentDisposition(ContentDispositionHeaderValue contentDisposition)
- {
- // Content-Disposition: form-data; name="key";
- return contentDisposition != null
- && contentDisposition.DispositionType.Equals("form-data")
- && string.IsNullOrEmpty(contentDisposition.FileName.Value)
- && string.IsNullOrEmpty(contentDisposition.FileNameStar.Value);
- }
- public static bool HasFileContentDisposition(ContentDispositionHeaderValue contentDisposition)
- {
- // Content-Disposition: form-data; name="myfile1"; filename="Misc 002.jpg"
- return contentDisposition != null
- && contentDisposition.DispositionType.Equals("form-data")
- && (!string.IsNullOrEmpty(contentDisposition.FileName.Value)
- || !string.IsNullOrEmpty(contentDisposition.FileNameStar.Value));
- }
- }
- }