我有一个允许用户选择图像的应用程序,然后我使用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 :(得分:0)
图像数据是一个字符串。您必须以字符串形式接收它并使用Convert.FromBase64String()
将其转换回字节