See comments within code for notes/clarifications.
[HttpPost]
[Route("documents/upload")]
public async Task<IHttpActionResult> UploadDocument()
{
if (!Request.Content.IsMimeMultipartContent())
{
return BadRequest(string.Format(@"Media type is unsupported for file upload"));
}
string root = HttpContext.Current.Server.MapPath("~/Content/Uploads");
System.IO.Directory.CreateDirectory(root);
var provider = new MultipartFormDataStreamProvider(root);
var yourTextNameVariableInYourQuestion = provider.FormData.GetValues("textname").Select(m => m).FirstOrDefault();
await Request.Content.ReadAsMultipartAsync(provider);
foreach (var file in provider.FileData)
{
FileInfo fileInfo = new FileInfo(file.LocalFileName);
if (fileInfo.Length != 0)
{
string newFileName = file.LocalFileName +
Path.GetExtension(
file.Headers.ContentDisposition.FileName
.Replace("\"", string.Empty)
.Replace(@"\", string.Empty));
global::System.IO.File.Move(file.LocalFileName, newFileName);
}
}
return Ok();
}