45 lines
1.8 KiB
C#
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;
|
|
}
|
|
}
|
|
} |