テスト実行ファイルアップロード用のWeb APIは、このような単純なビューモデルを持っている:メソッドで使用さWeb APIモデルバインダーはHttpPostedFileBaseで動作しませんか?
public class TestModel {
public string UserId {get;set;}
public HttpPostedFileBase ImageFile {get;set;}
}
:
[HttpPost]
public void Create(TestModel model)
私はマルチパート/フォームデータのエンコード形式を投稿しようとすると、アクションに、私はこの例外を受け取る:
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)
これはデフォルトのMVCモデルバインダーで動作しますが、どうやらないのWeb APIのと。ファイルをアップロードするときにビューモデルを使用することができず、データを2つの呼び出しに分けるといういくつかの言及が見つかりました。アップロードされたファイルで実際に何かを行うには、他のフィールドを投稿する必要があるので、私にとってはうまくいきません。これを達成する方法はありますか?
動作させるにはカスタムの 'MediaTypeFormatter'を書く必要があります。あなたが経験したように、 "multipart/form-data"はそのままではサポートされていません。あなたは[ここ](http://lonetechie.com/2012/09/23/web-api-generic-mediatypeformatter-for-file-upload/) – nemesv