2012-11-01 133 views
5

我正在使用MVC#。当我尝试将图像转换为base64字符串时,图像未打开。我从JavaScript获取base64字符串并将其转换为控制器中的图像。这是我的代码。将base64转换为c中的图像#

var base64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABG4AAAH0CAYAAABsCGvoAAAgAElEQVR4Xuy9C5RV1Zmo++96P3ZVURSv4hEEFdQobYKtJESjJME+6WgTpPUQIrfpY8NRui/aKlcvY2hON0fN5TIUbh/6XDs9bgah0+1BY+gk2p2QFpIAgk9AiGBhlQgIokgVRQFVu3bd9S+c21WbXVV71157Pfb+loNh1ar5+Oc3Z/H46p9zRnqsR3ggAAEIQAACEIAABCAAAQhAAAIQgAAEAkcggrgJ3JwQEAQgAAEIQAACEIAABCAAAQhAAAIQsAkgblgIEIAABCAAAQhAAAIQgAAEIAABCEAgoAQQNwGdGMKCAAQgAAEIQAACEIAABCAAAQhAAAKIG9YABCAAAQhAAAIQgAAEIAABCEAAAhAIKAHETUAnhrAgAAEIQAACEIAABCAAAQhAAAIQgADihjUAAQhAAAIQgAAEIAABCEAAAhCAAAQCSgBxE9CJISwIQAACEIAABCAAAQhAAAIQgAAEIIC4YQ1AAAIQgAAEIAABCEAAAhCAAAQgAIGAEkDcBHRiCAsCEIAABCAAAQhAAAIQgAAEIAABCCBuWAMQgAAEIAABCEAAAhCAAAQgAAEIQCCgBBA3AZ0YwoIABCAAAQhAAAIQgAAEIAABCEAAAogb1gAEIAABCEAAAhCAAAQgAAEIQAACEAgoAcRNQCeGsCAAAQhAAAIQgAAEIAABCEAAAhCAAOKGNQABCEAAAhCAAAQgAAEIQAACEIAABAJKAHET0IkhLAhAAAIQgAAEIAABCEAAAhCAAAQggLhhDUAAAhCAAAQgAAEIQAACEIAABCAAgYASQNwEdGIICwIQgAAEIAABCEAAAhCAAAQgAAEIIG5YAxCAAAQgAAEIQAACEIAABCAAAQhAIKAEEDcBnRjCggAEIAABCEAAAhCAAAQgAAEIQAACiBvWAAQgAAEIQAACEIAABCAAA...AgkKCA4CbBouoSAQIECBAgQIAAAQIECBAgkIaA4CaNOuoFAQIECBAgQIAAAQIECBAgkKCA4CbBouoSAQIECBAgQIAAAQIECBAgkIaA4CaNOuoFAQIECBAgQIAAAQIECBAgkKCA4CbBouoSAQIECBAgQIAAAQIECBAgkIaA4CaNOuoFAQIECBAgQIAAAQIECBAgkKCA4CbBouoSAQIECBAgQIAAAQIECBAgkIaA4CaNOuoFAQIECBAgQIAAAQIECBAgkKCA4CbBourS9wLLy8vhypUrob+/Pxw8eBALAQIECBAgQIAAAQIECBAonIDgpnAlS7vBY2Nj4e7du6GpqSkMDg4KXNIut94RIECAAAECBAgQIECAQBkBwY0hUjcC09PT4enTp9kMmdIxOzsbhoeHw/z8fOjp6QlDQ0Ohubk5XL16NbS3t4epqakwMjIS2trafvTavXv3ws2bN1e+Pjo6GmZmZkJLS8ua13R0dNSNh4YQIECAAAECBAgQIECAAAHBjTFQNwLj4+Ph2LFjq86y+XzZU29vb4ghzPHjx0NfX1/W/vj11V6LAc+FCxdCDHG6urqy82NANDk5GS5evPija+oGQ0MIECBAgAABAgQIECBAgMAnAcGNYVA3AqsFN4uLi9mSqbm5uZXlUzG4KQUypRkyMbj50ms3btzIlmCVjiNHjmTBzQ+vqRsMDSFAgAABAgQIECBAgAABAoIbY6CeBCYmJrKlUgMDAyvNiq/FmTJHjx4Nly9fDpcuXQp5gpvPZ9yUbr5a2FNPHtpCgAABAgQIECBAgAABAgTMuDEG6kqgtDlxbNTp06fD4cOHw7Vr17J9aU6dOhWWlpbCmTNnvnrGTdwDp7THTWnj49UCoLrC0BgCBAgQIECAAAECBAgQaHgBwU3DDwEABAgQIECAAAECBAgQIECAQL0KCG7qtTLaRYAAAQIECBAgQIAAAQIECDS8wP8AN7hUDozwDE4AAAAASUVORK5CYII="; 

byte[] str = System.Text.Encoding.Unicode.GetBytes(base64); 
var buffer = Convert.FromBase64String(Convert.ToBase64String(str)); 
var file = Server.MapPath("~/Content/images/err.png"); 
System.IO.File.WriteAllBytes(file, buffer); 
Image img = new Image(); 
img.ImageUrl = Server.MapPath("~/Content/images/err.png"); 

回答

5

我复制了base64字符串提示窗口。我用AJAX方法张贴从客户端中的Base64字符串,它为我工作

C#

[HttpPost] 
    public void Base64ToImage(string source) 
    { 
     string base64 = source.Substring(source.IndexOf(',') + 1); 
     base64 = base64.Trim('\0'); 
     byte[] chartData = Convert.FromBase64String(base64); 
} 

AJAX方法

var picture = jqplotToImg($('#ChartContent')); 
    //prompt("", picture); 

    $.ajax({ type: 'POST', 
     url: '../Report/Base64ToImage', 
     async: false, 
     data: { source: picture }, 
     success: function (data) { 
      //alert(data); 
     } 
    }); 
+0

一旦你有图像(chartData)怎么做你实际上保存在你的控制器的服务器上的某个地方,我试图chartdata.SaveAs,但那不工作... – dave317

+0

@ dave317你的意思是,保存从base64字符串创建的文件? – Curiousity

20

您的代码是完全错误的。

您需要通过删除第一个逗号前的所有内容来解析出该字符串中的实际base64数据。

然后,您可以在该数据上拨打Convert.FromBase64String()

string source = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABG4...YII="; 
string base64 = source.Substring(source.IndexOf(',') + 1); 
byte[] data = Convert.FromBase64String(base64); 
+0

谢谢,我删除,并试图又一次同样的错误 – DON

+0

_What错误你会得到吗? – SLaks

+0

看我的编辑;我忘了删除逗号本身 – SLaks