2016-05-26 69 views
0

我正在使用这个指令(ng--file-upload)来上传图片。
我需要包含图像文件到POST到ASP.NET Web API,但我没有任何成功。
这是我的服务器上的方法:无法上传图片文件从ng-file-upload到web api

public async Task<HttpResponseMessage> SaveData([FromBody]PostModel data) 

当我发布的数据(从JS角)的所有资料都在这儿,除了上传文件:

$http({ 
      method: 'POST', 
      url: path, 
      data: data, 
      file: photoFile 
     }).then(function... 

我试图把它的数据还,但它始终为空。
如何发布并获取Web api上的图像文件?

正如我得到的回应:

"Invalid 'HttpContent' instance provided. It does not have a content type header starting with 'multipart/'. 
Parameter name: content" 

在此行中:

var provider = new MultipartMemoryStreamProvider(); 
      await Request.Content.ReadAsMultipartAsync(provider); 

var data = {    
      "Username": $scope.username, 
      transformRequest: angular.identity, 
      headers: { 'Content-Type': undefined } 
     }; 

     var fd = new FormData(); 
     fd.append('file', $scope.photoFile); 

     $http({ 
      method: 'POST', 
      url: 'path', fd, 
      data: data 
     }).the 
+0

您可以使用'Upload.upload()'服务发送文件。阅读文档。 – danial

回答

1

使用FormData API

HTML:

<div class="button" ngf-select="upload($file)">Upload on file select</div> 

控制器:

$scope.upload = function (file) { 
    var fd = new FormData(); 
    fd.append('file', file); 

    //Append other data 
    //angular.forEach(data,function(v,k){ 
    // fd.append(k,v); 
    //}); 

    $http.post('your-upload-url', fd, { 
     transformRequest: angular.identity, 
     headers: {'Content-Type': undefined} 
    }) 
    .then(function(res){ 
     // get upload res 
    }); 
}; 
+0

但是我怎样才能获得Web API端的文件? – 1110

+0

对不起,我认为这是一个尖锐的问题....不擅长c#,但你可以检查[this](http://www.asp.net/web-api/overview/advanced/sending-html-form -data-part-2) –

+0

我更新了发送数据的问题,正如你所建议的,你可能知道为什么我从错误中得到错误? – 1110