2012-11-01 14 views
5

Ich benutze MVC#. Wenn ich versuche, in base64 string in image zu konvertieren, wird das Bild nicht geöffnet. Ich bekomme Base64-String von Javascript und die Konvertierung zu Image im Controller. Hier ist mein Code.Convert base64 in Bild in 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"); 

Antwort

5

Ich kopierte dieses Base64-String-Eingabeaufforderungsfenster. Ich verwendet Ajax-Methode für die base64 String von Client veröffentlichen und es funktioniert für mich

C#

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

AJAX-Methode

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

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

Sobald Sie das Bild (chartData) haben, wie Sie speichern es irgendwo auf dem Server in Ihrem Controller, ich habe versucht, chartdata.SaveAs, aber das funktioniert nicht ... – dave317

+0

@ dave317 Meinst du, die Datei aus der Base64 String erstellt zu speichern? – Curiousity

20

Ihr Code ist völlig falsch.

Sie müssen die tatsächlichen base64-Daten aus dieser Zeichenfolge analysieren, indem Sie alles vor dem ersten Komma entfernen.

Sie können dann Convert.FromBase64String() für diese Daten aufrufen.

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

Danke, ich entfernt und versucht, wieder die gleichen Fehler – DON

+0

_What Fehler erhalten Sie_? – SLaks

+0

Siehe meine Bearbeitung; Ich habe vergessen, das Komma selbst zu entfernen – SLaks