问题使用Angular序列化图像数据

时间:2014-09-25 21:57:30

标签: c# asp.net angularjs image

我有一个允许用户选择图像的应用程序,然后我使用ng-img-crop来允许他们裁剪图像。从那以后,我将图像的数据表示为:

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

使用ng-src指令将其设置为图像,如下所示:

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

从那里我将数据发送回我的A​​SP.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这样的简单字符串,那么它就可以了。所以我猜测有一个序列化问题。有人能指出我在哪里错了吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

图像数据是一个字符串。您必须以字符串形式接收它并使用Convert.FromBase64String()

将其转换回字节