gpt4 book ai didi

javascript - 图像->JSON->.Net 图像

转载 作者:行者123 更新时间:2023-12-03 05:33:49 26 4
gpt4 key购买 nike

我正在尝试学习 Knockout 并尝试创建一个照片 uploader 。我已成功将一些图像存储在数组中。现在我想回帖。在我的 knockout 码(Javascript)中,我这样做:

我在 Javascript 中有一个图像“类”:

// The image object that wukk be posted back.
function Image(_Image, _Description, _Filesize, _Filetype) {
var self = this;
self.Image =_Image;
self.Description = _Description;
self.Filesize = _Filesize;
self.Filetype = _Filetype;

self.DisplaySize = ko.computed(function () {
SizeToText(self.Filesize);
});
}

我在名为“images”的属性中有一个数组。

当我单击“保存”按钮时,我尝试简单地将图像数组字符串化为“对象”。

  var object = JSON.stringify({
images: self.images(),
});

然后,我将对象发布回我的 .net WebAPI Controller 。

    var uri = "/api/Photo/Upload";
$.post({ url: uri, contentType: "application/json" }, object)
.done(function (data) {
self.images.removeAll();
});

我的方法被调用,我可以在它接收到的数据中看到所有图像数据、描述等。

该方法定义为:

public int Upload(UIImageUploadList data)

UIImageUploadList 是一个保存图像列表的类:

public class UIImageUploadList
{
public List<UIImageUpload> Images { get; set; }
}

UIImageUpload 是:

 public class UIImageUpload
{

public string Image { get; set; }
public string Description { get; set; }
public string FileType { get; set; }
public int FileSize { get; set; }

}

因此,我尝试解析“数据”字段中的数据,以便可以将其传递到我的服务/逻辑/数据层。

foreach(var p in data.Images)
{
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
var routes_list =
json_serializer.DeserializeObject(p.Image);


byte[] bytes = Convert.FromBase64String(p.Image);

Image image;
using (MemoryStream ms = new MemoryStream(bytes))
{
image = Image.FromStream(ms);
}

photos.Add(new Photo
{
Description = p.Description,
PhotoData = image
});
}

但我认为它是 Base64 格式的。 (我相信 JSON.Stringify 做到了)。

图像属性以此开头:

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJY

并以以下内容结尾:

AElFTkSuQmCC"

我知道它是 JPG 还是 BMP 等。

在.Net中,我尝试将其更改为图像类型,以传递到我的数据库。

但是“DeserializeObject”失败,提示“数据不是原始 JSON 类型”。

我应该如何转换为最终存储在数据库中的图像?

最佳答案

在调用Convert.FromBase64String之前,您需要拆分包含编码图像数据的字符串。首先,删除 data:,然后获取图像的 MIME 类型 (image/png),然后获取编码 (base64)并且只有字符串的其余部分(逗号之后)可以传递到转换函数中。我对 C# 没有太多经验,但从那里开始,FromStream 函数应该足够智能来处理解码的数据。

关于javascript - 图像->JSON->.Net 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40816906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com