I have a web API built with ASP.NET WebAPI, I have a model that references a URI of a file (for example representing a photo in a photo gallery, or a product in a catalog) and I need to send the data to the API. / p>
As for uploading the file I've already been able to find how this is done in WebAPI on the asp.net site itself, the problem is that the default binder model does not work when the form is sent with enctype=multipart/form-data
.
What I mean is that I have in the controller a method with this signature:
public async Task<IHttpActionResult> Post([FromBody] Model model)
If I do not send with enctype=multipart/form-data
the model binder works and I can retrieve the data from the model, but I do not get the file. If I put this, I get the file but the model binder throws an exception
The request entity's media type 'multipart / form-data' is not supported for this resource.
In MediaTypeFormatter is available to read an object of type 'Model' from content with media type 'multipart / form-data'.
The only solution I thought at the time was basically to send only the model first in a request, then in a separate request send the file and associate the URI in the model.
Is there any way to do both at the same time? Or the most common is actually doing it in two steps, first sending the model and then the file?