2014-09-25 33 views
0

我有一個允許用戶選擇圖像的應用程序,然後我使用ng-img-crop來允許它們裁剪圖像。從我有數據表示爲類似的圖像:以角度序列化圖像數據

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAgA... 

這是使用NG-SRC指令設置的圖像,像這樣:

<img ng-src="{{product.Image}}" /> 

從那裏我送的數據返回到我的ASP.NET Web API控制器以將信息保存在數據庫中。我的產品模型有一個用於圖像的byte [],它在數據庫中表示爲varbinary。這裏是我的模型:

public class Product 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string SerialNumber { get; set; } 
    public string Notes { get; set; } 
    public byte[] Image { get; set; } 
    public int CategoryId { get; set; } 
    public virtual Category Category { get; set; } 
    public ApplicationUser User { get; set; } 
} 

所以,當我發信息給我的控制器,這裏是請求信息:

PUT http://localhost:20697/api/products/2 HTTP/1.1 
Host: localhost:20697 
Connection: keep-alive 
Content-Length: 37272 
Accept: application/json, text/plain, */* 
Origin: http://localhost:20697 
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36 
Content-Type: application/json;charset=UTF-8 
Referer: http://localhost:20697/ 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8 
Cookie: (truncated for size) 

{"Category":{"Id":5,"Name":"Graphics/Media","User":null},"Id":2,"Name":"Windows 8 x64 Professional","SerialNumber":"MN8M6","Notes":null,"Image":"data:image/png;base64,iVBORw0KGgo...(truncated for size)","CategoryId":4,"User":null} 

的問題是,如果我從圖像發送實時數據如上所示,產品在到達控制器時始終爲空。如果我將圖像的數據發送更改爲像abcd這樣的簡單字符串,那麼它會很好。所以我猜測有一個序列化問題。有人能指點我到哪裏去嗎?

謝謝!

回答

0

圖像數據是一個字符串。您必須以字符串形式接收它,並使用Convert.FromBase64String()

+0

將其轉換回字節。真棒。相反,我只是將圖像從byte []更改爲使用Varchar(MAX)的字符串。您是否看到採取該路線的任何問題? – Bob 2014-09-26 01:33:58

+0

如果圖像的唯一目的是顯示在網頁上,那麼ID說這是最好的方法。 – Crowcoder 2014-09-26 09:19:47