Files
cms_thermo_active/Thermo.Active/MultipartHandler.cs
T
2020-06-19 19:28:07 +02:00

45 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace Thermo.Active
{
public class FormItem
{
public string ParameterName { get; set; }
public byte[] Data { get; set; }
public string FileName { get; set; }
public string MediaType { get; set; }
public string Value { get { return Encoding.Default.GetString(Data); } }
public bool IsAFile { get { return !string.IsNullOrEmpty(FileName); } }
}
public static class MultipartHandler
{
public static async Task<List<FormItem>> ManageMultiPartFileAsync(HttpRequestMessage Request)
{
var provider = new MultipartMemoryStreamProvider();
// Read multipart data
await Request.Content.ReadAsMultipartAsync(provider);
var formItems = new List<FormItem>();
// Scan the Multiple Parts
foreach (HttpContent contentPart in provider.Contents)
{
// Populate list with form-data parameters
var formItem = new FormItem();
var contentDisposition = contentPart.Headers.ContentDisposition;
formItem.ParameterName = contentDisposition.Name.Trim('"');
formItem.Data = await contentPart.ReadAsByteArrayAsync();
formItem.FileName = String.IsNullOrEmpty(contentDisposition.FileName) ? "" : contentDisposition.FileName.Trim('"');
formItem.MediaType = contentPart.Headers.ContentType == null ? "" : String.IsNullOrEmpty(contentPart.Headers.ContentType.MediaType) ? "" : contentPart.Headers.ContentType.MediaType;
formItems.Add(formItem);
}
return formItems;
}
}
}