Diskuze: ASP.NET MVC 5 Obrázek z SQL Databáze

C# .NET .NET (C# a Visual Basic) ASP.NET MVC 5 Obrázek z SQL Databáze American English version English version

Avatar
Majkel
Člen
Avatar
Majkel:

Ahoj, ukládám obrázky do SQL jako byte[]. Obrázky jsou součástí informací o uživatelích. Teď bych ale potřeboval ty obrázky zobrazit a nevím, jak k to v razor enginu udělat.

 
Odpovědět 20.5.2015 17:28
Avatar
Odpovídá na Majkel
Michal Štěpánek:

Nevím, jak se toto má dělat správně, ale já jsem do databáze ukládal pouze název obrázku a cestu k němu, případně nějakou vazbu na nějakou osobu (která k tomu obrázku patří) a obrázky samotné jsem měl vždycky uložené v nějaké složce. Při výpisu jsem se pouze odkazoval do konkrétní složky podle výběru konkrétní položky z DB.

Nahoru Odpovědět 20.5.2015 21:05
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Majkel
Jan Vargovský:

Napiš si k modelu (nebo ViewModelu) další vlastnost, který ti inicializuje.

private Image image;
public Image Image
{
get
{
 if(image == null)
{
MemoryStream ms = new MemoryStream(array);
image = Image.FromStream(ms);
}
return image;
}
}
 
Nahoru Odpovědět 20.5.2015 21:29
Avatar
Majkel
Člen
Avatar
Odpovídá na Jan Vargovský
Majkel:

Napsal jsem medotu:

public Image GetImg(byte[] imgStream)
        {
            MemoryStream ms = new MemoryStream(imgStream);
            Image = Image.FromStream(ms);
            return Image;
        }

Následně v Index.cshtml:

<td>
                @{
                 CDWA.Models.GetImage getImage = new CDWA.Models.GetImage();
                 var moje = getImage.GetImg(item.Picture);
                }
                <img src="@moje" alt="Image" />
            </td>
Editováno 21.5.2015 15:21
 
Nahoru Odpovědět 21.5.2015 15:21
Avatar
JMS
Člen
Avatar
Odpovídá na Majkel
JMS:

Nefunguje ti to, protože do atributu src neukládáš URL obrázku.
Lepší způsob je uložit si obrázek na server a vrátit si jeho URL, kterou uložíš do databáze s názvem obrázku atd. Potom si ji jednoduše vytáhneš a naplníš s ním atribut src :-)

 
Nahoru Odpovědět 21.5.2015 16:02
Avatar
Majkel
Člen
Avatar
Odpovídá na JMS
Majkel:

Já to musím právě vyřešit přes tu databázi.

 
Nahoru Odpovědět 21.5.2015 16:49
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Majkel
Jan Vargovský:

Sorry, tak jsem googlil trošku dále než na první odkaz :D zkus tohle:

public byte[] Image {get;set;}

private string imagePath;
 public string ImagePath
 {
 get
 {
  if(imagePath == null && Image != null)
 {
   imagePath = "data:image/png;base64," + Convert.ToBase64String(Image, 0, Image.Length);
 }
 return imagePath;
 }
 }
Editováno 21.5.2015 17:20
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 21.5.2015 17:20
Avatar
Majkel
Člen
Avatar
Odpovídá na Jan Vargovský
Majkel:

Nakonec jsem to vyřešil takto. Díky všem za tipy a rady :-)

<td>
               <img src="data:image/jpg;base64,@Convert.ToBase64String(item.Picture,0,item.Picture.Length ,
         Base64FormattingOptions.None)"
              alt="Image" width="100" height="100" />

           </td>
 
Nahoru Odpovědět 21.5.2015 19:07
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.