2017-12-29 14 views
0

次のC#コードを継承して画像をアップロードしましたが、フェッチAPIを使用してエンドポイントを呼び出そうとしています。 エラーIを受信し続ける:{ "無効 'HttpContent' インスタンスを提供それはマルチパート/ 'で始まるコンテンツタイプヘッダを持っていない\ R \ nParameter名:コンテンツ"}fetch apiとC#web APIを使用して画像をアップロードしようとしています

このエンドポイントを呼び出すのに間違っていますか?私はC#/ webのapiコードとその下のjavascriptコードを含んでいます。あなたが提供できるお手伝いをありがとう。

[Route("coverpicture")] 
public virtual Task<HttpResponseMessage> Post() 
{ 
    HttpContext.Current.Response.ContentType = "application/json"; 
    var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter; 
    var personId = CurrentUser.PersonId; 

    if (!Request.Content.IsMimeMultipartContent()) 
    { 
     throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); 
    } 

    var task = Request.Content.ReadAsMultipartAsync().ContinueWith(t => 
     { 
      var parts = t.Result.Contents; 
      var content = parts.First(x => x.Headers.ContentDisposition.Name.Contains("CoverPicture")); 

      if (content == null) 
      { 
       var resp = new HttpResponseMessage(HttpStatusCode.NotAcceptable) 
       { 
        Content = new ObjectContent<string>("No ContentDisposition named CoverPicture.", formatter) 
       }; 
       return resp; 
      } 

      using (var imgStream = content.ReadAsStreamAsync().Result) 
      using (var photos = new PhotosProvider()) 
      { 
       var photo = photos.CreateOrUpdateCoverPicture(personId, imgStream); 
       var resp = new HttpResponseMessage(HttpStatusCode.OK) 
        { 
         Content = new ObjectContent<Photo>(photo, formatter) 
        }; 
       return resp; 
      } 
     }); 

    return task; 
} 

Javascriptコード:私は次のようにあなたが試すべきだと思い

let data = new FormData() 
for (var x = 0; x < files.length; x++){ 
    data.append("file" + x, files[x]); 
} 
fetch(url, { 
    method: 'POST', 
    mode: 'cors', 
    contentType: false, 
    processData: false, 
    body: JSON.stringify({}), 
    data: data 
}) 
.then(parseResponse) 
.then(resolve) 
.catch(reject); 

答えて

2

...働い

let data = new FormData() 
for (var x = 0; x < files.length; x++){ 
    data.append("file" + x, files[x]); 
} 
fetch(url, { 
    method: 'POST', 
    mode: 'cors', 
    body: data 
}) 
.then(parseResponse) 
.then(resolve) 
.catch(reject); 
+0

!本当にありがとう。 – user3192594

関連する問題