2015-09-02 3 views
1

Я создаю веб-приложение ASP MVC, и я пытаюсь загрузить изображения из базы данных SQLite, добавив их в список и показывая их в моем представлении.Преобразование из объекта в байт [] при добавлении в список

В моей модели, у меня есть изображение, как это:

public Byte Image { get; set; } 

Я пытался читать его и добавить его так:

public List<ImageModel> Images { get; set; } 

using (SQLiteDataReader rdr = cmd.ExecuteReader()) 
       { 
        while (rdr.Read()) 
        { 
         list.Add(new ImageModel 
         { 

          Image = "data:image/png;base64," + Convert.ToBase64String(rdr["image"]) // error 
         }); 
        } 
        rdr.Close(); 
        Images = list; 
       } 

Но это дает мне «не может преобразовать от объекта до байта [] ". Любые подсказки относительно того, как я могу подойти к этому?

ответ

2
public static byte[] Serialize(object obj) 
{ 
    var binaryFormatter = new BinaryFormatter(); 
    var ms = new MemoryStream(); 
    binaryFormatter.Serialize(ms, obj); 
    return ms.ToArray(); 
} 

А потом

Image = "data:image/png;base64," + Convert.ToBase64String(Serialize(rdr["image"])) 

И для десериализации:

public static object Deserialize(byte[] data) 
{ 
    var binaryFormatter = new BinaryFormatter(); 
    return binaryFormatter.Deserialize(new MemoryStream(data)); 
} 
+0

Ах, спасибо. Это наверняка привлекло меня намного ближе, но я получаю сообщение «Can not implicitly convert type string to byte []» в строке, где я сериализую его и добавляю в список. Изменение типа в модели от Byte to String также не помогает, потому что тогда оно просто выводит огромную строку в представлении. – Left4Cookies