Вы можете справиться с ситуацией с помощью двух сценариев.
- Вы можете использовать HttpContext.Current.Request
- Не требуется, как вы упомянули в свойстве байта [] класса модели.
Ref. Ссылка 1: https://www.c-sharpcorner.com/UploadFile/2b481f/uploading-a-file-in-Asp-Net-web-api/
public class ValuesController: ApiController
{
[System.Web.Http.HttpPost]
public HttpResponseMessage PostComplex(TestAspDotNetModelClass update)
{
if (update.fileProfile != null)
{
HttpResponseMessage result = null;
var httpRequest = HttpContext.Current.Request;
if (httpRequest.Files.Count > 0)
{
var docfiles = new List<string>();
foreach (string file in httpRequest.Files)
{
var postedFile = httpRequest.Files[file];
var filePath = HttpContext.Current.Server.MapPath("~/" + postedFile.FileName);
postedFile.SaveAs(filePath);
docfiles.Add(filePath);
}
result = Request.CreateResponse(HttpStatusCode.Created, docfiles);
}
else
{
result = Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
else
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
}
Класс модели
public class TestAspDotNetModelClass
{
public int Id { get; set; }
public string Name { get; set; }
public string Base64Stringfile { get; set; }
}
Действие контроллера API
public class ValuesController: ApiController
{
[System.Web.Http.HttpPost]
public HttpResponseMessage PostComplex(TestAspDotNetModelClass update)
{
if (update.Base64Stringfile != null)
{
// Convert base 64 string to byte[]
byte[] fileBytes = Convert.FromBase64String(update.Base64Stringfile);
// Convert your byte[] to file
return Request.CreateResponse(HttpStatusCode.OK);
}
else
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
}