2017-12-29 1 views
0

이미지를 업로드하기 위해 다음 C# 코드를 상속했으며 가져 오기 API를 사용하여 끝점을 호출하려고합니다. 나는 계속받는 오류 :fetch api 및 C# web API로 이미지 업로드 시도 중

{ "제공 잘못된 'HttpContent'예 그것은 '/ 멀티'로 시작하는 콘텐츠 형식 헤더가없는 \ 연구 \ 이름 nParameter :.. 내용"}

이 엔드 포인트를 호출 할 때 내가 뭘 잘못하고 있는지 알 수 있습니까? 나는 C#/web API 코드와 자바 스크립트 코드를 포함시켰다. 제공 할 수있는 도움에 감사드립니다.

[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; 
} 

자바 스크립트 코드 : 나는 다음과 같이 시도해야한다고 생각

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

관련 문제