2016-06-02 3 views
0

각도 응용 프로그램에서 Angular JS의 웹 API에 Excel 파일을 업로드하려고하는데 이렇게 할 수 없습니다. 서버 웹 API의 메소드가 적중하지 않습니다.보낼 수없는 파일을 웹 api에 보낼 수 없습니다

각도 코드는 다음과 같습니다

$scope.file = null; 

    //UPLOAD FILE CODE 
    var formdata; 
    $scope.getTheFiles = function ($files) { 
     console.log($files[0].type); 
     formdata = new FormData(); 
     angular.forEach($files, function (value, key) { 
      formdata.append(key, value); 
     }); 
    }; 

    // NOW UPLOAD THE FILES. 
    $scope.uploadFiles = function() { 
     var request = { 
      method: 'POST', 
      url: BasePath + 'uploadNative/UploadFiles/', 
      data: formdata, 
      headers: { 
       'Content-Type': undefined 
      } 
     }; 

     // SEND THE FILES. 
     console.log(formdata); 

     if (formdata != null || formdata != undefined) { 
      $http(request) 
       .success(function (response) { 
        if (response != "Failed!") { 
         console.log("Succeeds"); 
        } 
        else { 
         console.log("Failed"); 
        } 
       }) 
       .error(function() { 
       }); 
     } 

그리고 웹 API 컨트롤러를 호출해야 UI MVC 컨트롤러는 예외가 발생합니다.

public async Task<JsonResult> UploadFiles() 
    { 
     System.Web.HttpFileCollection hfc = System.Web.HttpContext.Current.Request.Files; 

     string url = BaseURL + "api/Upload/groupmembershipupload/"; 
     string res = await Models.Resource.PostFileAsync(url, Token, hfc, ClientID); 
     var result = (new JavaScriptSerializer()).DeserializeObject(res); 
     return Json(result); 
    } 

이 PostFileAsync는 예외를 발생시킵니다.

  using (client = new HttpClient()) 
      { 

       client.BaseAddress = new Uri(url); 
       client.DefaultRequestHeaders.Accept.Clear(); 
       //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
       //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("multipart/form-data")); 
       client.DefaultRequestHeaders.Add("Authorization", "Bearer " + oauthToken); 
       client.DefaultRequestHeaders.Add("ClientID", ClientID); 
       var content = new MultipartFormDataContent(); 
       System.Web.HttpPostedFile hpf = data[0]; 


       byte[] fileData = null; 
       using (var sds = new BinaryReader(hpf.InputStream)) 
       { 
        fileData = sds.ReadBytes(hpf.ContentLength); 
       } 
       content.Add(new ByteArrayContent(fileData, 0, fileData.Count())); 
       //using (response = await client.PostAsJsonAsync(url + "?=" + DateTime.Now.Ticks, data)) 
       using (response = await client.PostAsync(url + "?=" + DateTime.Now.Ticks, content)) 
       { 

은 ... 응답의 HTTP 오류 415 "지원되지 않는 미디어 유형"입니다. 서비스를 호출하지 않습니다.

답변

0

변경 headers에 :

headers: { 
      'Content-Type': 'multipart/form-data' 
     } 
관련 문제