Status 415 Unsupported Media Type Form-Data

Viewed 1297

I am trying to call Post method from API controller from PostMan using form-data from Body . But after click of the Send button from postman , it is showed an error message "Unsupported Media Type"

{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.13",
    "title": "Unsupported Media Type",
    "status": 415,
    "traceId": "|cd267e9d-4f557653ef6391ef."
}

Here is the code. Model class

public class PersonCreationDTO
    {
        [Required]
        [StringLength(120)]
        public string PersonName { get; set; }
        public string Biography { get; set; }
        public DateTime DateOfBirth { get; set; }
        public IFormFile Picture { get; set; }
        
    }


public class Person
    {
        public int Id { get; set; }
        [Required]
        [StringLength(120)]
        public string PersonName { get; set; }
        public string Biography { get; set; }
        public DateTime DateOfBirth { get; set; }
        public string Picture { get; set; }
    }

Controller

[ApiController]
    [Route("api/people")]
 public class PeopleController:ControllerBase
    {
        private readonly ApplicationDbContext context;
        private readonly IMapper mapper;

        public PeopleController(ApplicationDbContext context, IMapper mapper)
        {
            this.context = context;
            this.mapper = mapper;
        }
    [HttpPost]
        public async Task<ActionResult> Post([FromBody] PersonCreationDTO personCreation)
        {
            var person = mapper.Map<Person>(personCreation);
            context.Add(person);
            //await context.SaveChangesAsync();
            //var personDTO = mapper.Map<PersonDTO>(person);
            //return new CreatedAtRouteResult("getPerson", new { Id = personDTO.Id }, personDTO);

            return NoContent();
        }
}

PostMan Seatils

2 Answers

Add [FromForm] Instead of [FromBody]

[HttpPost]
public async Task<ActionResult> Post([FromForm] PersonCreationDTO personCreation)
{
  //clarify code
}
  1. In Postman click headers and click (select) the first Content Type - multipart/form-data; boundary= calculated when request is sent

  2. In your controller action replace [FromBody] with [FromForm]

Related