mirror of
				https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
				synced 2025-10-30 17:55:32 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| namespace HaWeb.FileHelpers;
 | |
| using System;
 | |
| using System.IO;
 | |
| using Microsoft.Net.Http.Headers;
 | |
| 
 | |
| 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)
 | |
|         => !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) {
 | |
|         return contentDisposition != null
 | |
|             && contentDisposition.DispositionType.Equals("form-data")
 | |
|             && (!string.IsNullOrEmpty(contentDisposition.FileName.Value)
 | |
|                 || !string.IsNullOrEmpty(contentDisposition.FileNameStar.Value));
 | |
|     }
 | |
| }
 | |
| 
 | 
