如何从web api发布和获取数据uri图像?

时间:2016-02-16 17:22:24

标签: javascript c# asp.net asp.net-web-api

我正在尝试将数据uri图像从javascript发布到后端asp.net webapi。但是,它给了我input is not a valid Base-64 string错误。现在,我理解这可能是由于数据uri包含的“data:image / png; base64”部分。

现在,即使我从数据uri中删除此部分并仅将其余字符串发送到服务器,如何在服务器上存储Base-64字符串?

此外,如何从webapi中将此数据作为图像检索?

注意:图像的大小将小于200kB,因此将在sql server中存储为varbinary(Max)。

2 个答案:

答案 0 :(得分:1)

问题是您应该将图像转换为byte []并将其作为varbinary存储在服务器中

 byte []arr = new byte[image1.ContentLength];
 image1.InputStream.Read(arr, 0, image1.ContentLength);

检索时,应将varbinary数据转换为base64字符串,将64字符串转换为图像

string imageBase64Data = Convert.ToBase64String(img); 

上面的代码重要部分将varbinary转换为base64string。它应该以适当的格式显示图像。以下代码执行的操作

  string imageDataURL = string.Format("data:image/png;base64,{0}", asd);
  Session["Photo"] = imageDataURL;

现在您可以查看图片了

答案 1 :(得分:0)

将客户端中的图像发布到for字符串中,不指定类型。在您的操作中,您可以通过以下方式获取图像:

    var bytes = Convert.FromBase64String(yourStringHere);
    using (var ms = new MemoryStream(bytes))
    {
        image = Image.FromStream(ms);
    }