2017-10-19 6 views
0

J'essaie de lire des données BLOB dans un objet image html. Je veux éviter toute création et manipulation de fichier dans le processus (sauf si c'est inévitable). Mon code actuel estEntity Framework Lecture de données Blob en HTML img

Tableau de données:

studentID | firstname | photo 
----------+-----------+------------ 
93  |Eva  | Blob data 

StudentEntity.cs:

public class ShortStudent 
{ 
    public string firstname { get; set; } 
    public int studentid { get; set; } 
    public string photo { get; set; } 
} 

Ces données sont ensuite envoyées à la vue comme suit

ShortStudent sd = new ShortStudent(); 

sd.firstname = <name from db>; 
sd.photo = Convert.ToBase64String(Serialize(<Blob data from db>)); 
.... 
return Json(sd, JsonRequestBehavior.AllowGet); 

sérialisation:

private byte[] Serialize(string p) 
{ 
    var binaryFormatter = new BinaryFormatter(); 
    var ms = new MemoryStream(); 
    binaryFormatter.Serialize(ms, p); 
    return ms.ToArray(); 
} 

Javascript:

<img src="data:image/gif;base64,#= data.photo #" alt="<image not found>" /> 

Si je mets quelques exemples de données affichées correctement mais pas les données qui proviennent de la base de données (données de base de données après la sérialisation et la conversion est 3 fois l'exemple des données de taille)

Répondre

0

Je devais simplement lire les données d'image comme octet [] au lieu de chaîne et cela a fonctionné.

StudentEntity.cs

public class ShortStudent 
{ 
    public string firstname { get; set; } 
    public int studentid { get; set; } 
    public byte[] photo { get; set; } 
} 

et changer

sd.photo = Convert.ToBase64String(Serialize(<Blob data from db>)); 

à

string img = Convert.ToBase64String(<Blob data from db>); 

et envoyer JSON

+1

Nice, j'étais sur le point de montrer la même chose. – Hackerman

+0

Merci de bien vouloir vérifier ma question :) – Samra