Introduction

This article provides an example of a Multipart MIME in the ASP.NET Web API. Multipurpose Internet Mail Extension (MIME) allows entities to be encapsulated. Multipart MIME is associated with the "Media Types Family".

Procedure of accessing Multipart MIME in the Web API.

Step 1

Create the Web API application.

Step 2

Add a controller to the project as in the following:

Add these namespaces:

  1. using System.IO;
  2. using System.Threading.Tasks;
  3. using System.Diagnostics;
And write this code:
  1. namespace MultipartMIME.Controllers
  2. {
  3. public class SaveController : ApiController
  4. {
  5. public async Task<HttpResponseMessage> Doc()
  6. {
  7. if (!Request.Content.IsMimeMultipartContent())
  8. {
  9. throw
  10. new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
  11. }
  12. string info = HttpContext.Current.Server.MapPath("~/App_Data");
  13. var generator = new MultipartFormDataStreamProvider(info);
  14. try
  15. {
  16. StringBuilder str = new StringBuilder();
  17. await Request.Content.ReadAsMultipartAsync(generator);
  18. foreach (var gen in generator.FormData.AllKeys)
  19. {
  20. foreach (var data in generator.FormData.GetValues(gen))
  21. {
  22. str.Append(string.Format("{0}: {1}\n", gen, data));
  23. }
  24. }
  25. return new HttpResponseMessage()
  26. {
  27. Content = new StringContent(str.ToString())
  28. };
  29. }
  30. catch (System.Exception x)
  31. {
  32. return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, x);
  33. }
  34. }
  35. }
  36. }

The "IsMimeMultipartContent()" method checks the Multipart MIME message, if none then it returns the unsupported media type.

The "ReadAsMultipartAsync" method reads all the Multipart messages and it produces an HttpContent as a result.

Step 3

Open the "Index.cshtml" file.


Write this code:

  1. <header>
  2. <div class="content-wrapper">
  3. <div class="float-left">
  4. <p class="site-title">
  5. <a href="~/">ASP.NET Web API</a>
  6. </p>
  7. </div>
  8. </div>
  9. </header>
  10. <div id="body">
  11. <h2>Using MIME Multipart</h2>
  12. <section class="main-content clear-fix">
  13. <form name="tour_search" method="post" enctype="multipart/form-data" action="api/save">
  14. <fieldset>
  15. <legend>Example train selection</legend>
  16. </fieldset>
  17. <label for="tour">Tour</label>
  18. <div>
  19. <input type="radio" name="tour" value="return-journey" checked="checked"/>
  20. Return journey
  21. </div>
  22. <div>
  23. <input type="radio" name="tour" value="one-way"/>
  24. One-Way
  25. </div>
  26. <label for="class">Class</label>
  27. <div>
  28. <input type="checkbox" name="options" value="Sleeper" />
  29. Sleeper
  30. </div>
  31. <div>
  32. <input type="checkbox" name="options" value="first-AC" />
  33. First AC
  34. </div>
  35. <div>
  36. <input type="checkbox" name="options" value="Second-AC" />
  37. Second AC
  38. </div>
  39. <div>
  40. <input type="checkbox" name="options" value="Third-AC" />
  41. Third AC
  42. </div>
  43. <div>
  44. <label for="seat">Choice if any</label>
  45. <select name="seat">
  46. <option value="select">Select</option>
  47. <option value="upper">Upper</option>
  48. <option value="middle">Middle</option>
  49. <option value="lower">Lower</option>
  50. <option value="No choice">No Choice</option>
  51. </select>
  52. </div>
  53. <div>
  54. <input type="submit" value="Send" />
  55. </div>
  56. </form>
  57. </section>
  58. </div>

Step 4

Execute the application by pressing F5.

multi4.jpg

Select the information.

multi5.jpg

Click on the "Send" button.

multi6.jpg