Sukhomlin Eugene
Sukhomlin Eugene

Reputation: 183

'multipart/form-data' is not supported for this resource

I have WEbAPI2 back end.

I try to send form data from postman

enter image description here

But get this error

"No MediaTypeFormatter is available to read an object of type 'StartWorkingDay' from content with media type 'multipart/form-data'.",

Here is code of my controller

// POST: api/StartWorkingDays
[ResponseType(typeof(StartWorkingDay))]
public IHttpActionResult PostStartWorkingDay(StartWorkingDay startWorkingDay)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    db.StartWorkingDays.Add(startWorkingDay);
    db.SaveChanges();

    return CreatedAtRoute("DefaultApi", new { id = startWorkingDay.Id }, startWorkingDay);
}

When I send it via raw data, all okay

enter image description here

How I can make it receive multipart/form-data?

Upvotes: 3

Views: 11237

Answers (2)

Ajay
Ajay

Reputation: 653

Select form-data in postman. Add key "startWorkingDay", and deserialize the request parameter in your requisite function. And, you are done.

Postman Snap

Code:

    // POST: api/StartWorkingDays
        [System.Web.Http.AcceptVerbs("POST")]
        [System.Web.Http.HttpPost]
        [ResponseType(typeof(StartWorkingDay))]
        public IHttpActionResult PostStartWorkingDay()
        {
            var startWorkingDay = JsonConvert.DeserializeObject<StartWorkingDay>(HttpContext.Current.Request.Form["startWorkingDay"]);
            //if (!ModelState.IsValid)
            //{
            //    return BadRequest(ModelState);
            //}

            db.StartWorkingDays.Add(startWorkingDay);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = startWorkingDay.Id }, startWorkingDay);
        }


  [1]: https://i.sstatic.net/AF5YH.png

Upvotes: 1

garethb
garethb

Reputation: 4041

Taken from MSDN

application/x-www-form-urlencoded

Form data is encoded as name/value pairs, similar to a URI query string. This is the default format for POST.

multipart/form-data

Form data is encoded as a multipart MIME message. Use this format if you are uploading a file to the server.

Use enctype x-www-form-urlencoded, not form-data in postman

Upvotes: 7

Related Questions