2016-03-16 11 views
10

Temelde Web API İşte 2.Web API kullanarak dosya ve model nasıl yüklenir? Bir çok parçalı formu göndermek istediğiniz her seferinde</p> <pre><code>[HttpPost] public UploadResponseVm Upload([FromBody]ResImageType type) { </code></pre> <p>şey, (şununla:

kullanarak bir enum ile birlikte bir resim yüklemek için kontrolör imza bulunuyor çalışıyorum bir dosya ve türü) Ben 415 hatası alıyorum:

:

{"Message":"The request entity's media type 'multipart/form-data' is not supported for this resource.","ExceptionMessage":"No MediaTypeFormatter is available to read an object of type 'ResImageType' from content with media type 'multipart/form-data'.","ExceptionType":"System.Net.Http.UnsupportedMediaTypeException","StackTrace":" at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable 1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable 1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)"}

hatta benim startup.cs sınıfa aşağıdaki eklemiş 210

Web api denetleyicisi kullanarak bir dosyayla birlikte nasıl bir model yükleyebilirim?

cevap

0

ResImageType nesnesini işleyebilecek/değiştirebilecek bir biçimlendirici yoktur. Bir kez daha parametresiz bir yöntem kullanarak biçimlendirici olmadan benzer bir problemi çözdüm ve veriyi yöntem içinde işledim. Örneğin: MultipartDataMediaFormatter okunaklı görünüyor mesela başka olasılık nesne aktarmak ve bir biçimlendirici kullanmak için kullanılan bir DTO benzeri sınıf yaratmaktır MS Docs

den

public async Task<HttpResponseMessage> PostFormData() 
    { 
     if (!Request.Content.IsMimeMultipartContent("form-data")) 
     { 
      return Request.CreateResponse(HttpStatusCode.BadRequest); 
     } 

      string upDir= "PathOfDirectory"; 

      MultipartFormDataStreamProvider streamProvider = new MultipartFormDataStreamProvider(upDir);     
      MultipartFileStreamProvider multipartFileStreamProvider = await Request.Content.ReadAsMultipartAsync(streamProvider); 

      // Loop through files. 
      foreach (MultipartFileData file in streamProvider.FileData) 
      { 
       // Save filepaths to DB or do something else 
      } 
      return Request.CreateResponse(HttpStatusCode.OK); 
    } 

Benzer çözümü, (denemedim).