2016-05-18 6 views
-1

Ich lade Datei (Bild) über HTML-Steuerelement und sende es mit anderen json Eigenschaften an meine API. Das Bild Eigenschaft aussieht:Datei als JSON-Eigenschaft, wie man es bekommt

Picture: "data:image/png;abase64,iVBORw0KGgoAAAANS {a lot of chars}=" 

Und in meinem Controller muss ich bekommen: 1. Dateiname 2. Dateierweiterung 3. Datei es 4. Breite, Höhe 5 in der Datenbank zu speichern. Andere Info

Wie kann ich das tun? Ich habe dies:

var bytes = Convert.FromBase64String(model.Picture); 
Image image; 
using (var stream = new MemoryStream(bytes)) 
{ 
    image = Image.FromStream(stream); 
} 

Aber Bild hat keine Eigenschaften mit Namen, Nebenstelle.

+0

Wie Serialisieren Sie das Bild? Was ist der Serializer, den Sie dafür verwenden? –

Antwort

1

Für Höhe und Breite Sie die

var height = image.Height; 
var width = image.Width; 

Was als Bildtyp betreffende verwenden können, fand ich diese Schnipsel nützlich:

string mimeType = string.Empty; 
Guid id = image.RawFormat.Guid; 
if (id == ImageFormat.Png.Guid) 
{ 
    mimeType = "image/png"; 
} 
else if (id == ImageFormat.Bmp.Guid) 
{ 
    mimeType = "image/bmp"; 
} 
else if (id == ImageFormat.Emf.Guid) 
{ 
    mimeType = "image/x-emf"; 
} 
else if (id == ImageFormat.Exif.Guid) 
{ 
    mimeType = "image/jpeg"; 
} 
else if (id == ImageFormat.Gif.Guid) 
{ 
    mimeType = "image/gif"; 
} 
else if (id == ImageFormat.Icon.Guid) 
{ 
    mimeType = "image/ico"; 
} 
else if (id == ImageFormat.Jpeg.Guid) 
{ 
    mimeType = "image/jpeg"; 
} 
else if (id == ImageFormat.MemoryBmp.Guid) 
{ 
    mimeType = "image/bmp"; 
} 
else if (id == ImageFormat.Tiff.Guid) 
{ 
    mimeType = "image/tiff"; 
} 
else if (id == ImageFormat.Wmf.Guid) 
{ 
    mimeType = "image/wmf"; 
} 
0

versuchen diese

var bytes = Convert.FromBase64String(model.Picture); 
     using (var imageToSave= new FileStream(filePath, FileMode.Create)) 
{ 
    imageToSave.Write(bytes ,0, bytes.Length); 
    imageToSave.Flush(); 
} 
+1

Dies kann nicht funktionieren, da die Präambel des 'Picture'-Eigenschaftswerts (' data: image/png; abase64') nicht Base64-codiert ist. –

+0

manchmal ist es "abase64" und manchmal ist es "base64" ... Ich weiß nicht, welche Dateierweiterung es sein wird. Ich weiß nur, es wird Bild sein;) – Nerf