poner a prueba API web para la carga de archivos, tiene un modelo simple vista como esta:¿La carpeta del modelo de API web no funciona con HttpPostedFileBase?
public class TestModel {
public string UserId {get;set;}
public HttpPostedFileBase ImageFile {get;set;}
}
utilizado en el método:
[HttpPost]
public void Create(TestModel model)
Cuando intento publicar un/form form-data codificada multiparte a la acción, recibo esta excepción:
System.InvalidOperationException: No MediaTypeFormatter is available to read an object of type 'TestModel' from content with media type 'multipart/form-data'.
at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger)
at System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger)
at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger)
at System.Web.Http.ModelBinding.FormatterParameterBinding.ExecuteBindingAsync(ModelMetadataProvider metadataProvider, HttpActionContext actionContext, CancellationToken cancellationToken)
at System.Web.Http.Controllers.HttpActionBinding.<>c__DisplayClass1.<ExecuteBindingAsync>b__0(HttpParameterBinding parameterBinder)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Threading.Tasks.TaskHelpers.IterateImpl(IEnumerator`1 enumerator, CancellationToken cancellationToken)
esto funciona con el ligante modelo MVC por defecto, pero al parecer no con la API de web. Se encontraron algunas menciones de que no se puede usar un modelo de vista al cargar un archivo y separar los datos en dos llamadas. Eso no funciona para mí, ya que necesito que se publiquen los otros campos para hacer algo con el archivo cargado. ¿Hay alguna manera de lograr esto?
Necesita escribir un 'MediaTypeFormatter' personalizado para que funcione. Como experimentó "multipart/form-data" no es compatible de forma inmediata. Puede comenzar [aquí] (http://lonetechie.com/2012/09/23/web-api-generic-mediatypeformatter-for-file-upload/) – nemesv