2016-06-14 58 views
1

我通過webapi發送模型到服務器,模型包含基本64編碼圖像,但是如果我發送沒有編碼字符串,那麼在服務器端我得到所有模型的其它性質,傳遞給web api的模型爲空,如果我在模型中傳遞base 64編碼圖像

但是當我包括編碼在模型整個模型串來作爲空的base64,

我使用在客戶端和.net的WebAPI AngularJS在服務器

角代碼

var base64ImageString='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMg.......' 
var req = { 
method: 'POST', 
url: 'myurl', 
data: { EncodedImage: base64ImageString,Name:'Rajiv' } 
} 

$http(req).then(function(){...}, function(){...}); 

服務器端代碼

public HttpResponseMessage Post([FromBody] UserInfo userInfo) 
{ 
    //My Stuff 
} 

public class UserInfo 
{ 
public String EncodedImage{get;set;} 
public String Name{get;set;} 
} 

回答

1

您的圖片太大?嘗試上傳較小的圖像(幾個100 KB的大小)。如果可行,請嘗試壓縮,或在編碼之前降低圖像的分辨率。以下是一個示例:https://stackoverflow.com/a/20382559/1237117

另一個選項是增加Web API的json大小限制。

<configuration> 
    <system.web.extensions> 
     <scripting> 
      <webServices> 
       <jsonSerialization maxJsonLength="50000000"/> 
      </webServices> 
     </scripting> 
    </system.web.extensions> 
</configuration> 
0

先嚐試做一個請求,以獲得從後端的空對象。在javascript中設置對象的屬性,並將修改後的對象發送回服務器。

$scope.model = {}; 

$http.get(apiPath).then(function(result){ 
    $scope.model = result.data; 
}); 

$scope.model.EncodedImage = base64ImageString; 
$scope.model.Name = "Rajiv"; 

$http.post(apiPath, $scope.model).then(function(result){ 
    // ... 
}); 

同時刪除在後端[FromBody],並且stringUserInfo類應該用小寫字母來寫。