Recupero immagini DataBase

venerdì 21 luglio 2006 - 11.41

Eduardo Profilo | Newbie

Salve!
Qualcuno sa come recuperare immagini da sql server e inserire in un datalist.

Con immagini messe in una cartella so farlo!

Ma dal database?

Grazie

Brainkiller Profilo | Guru

>Salve!
>Qualcuno sa come recuperare immagini da sql server e inserire
>in un datalist.
>Con immagini messe in una cartella so farlo!
> Ma dal database?

Devi scaricare dal database, dal campo BLOB, ossia leggere i byte binari, scriverli su disco e poi caricare l'immagine nel datalist:
http://www.dotnethell.it/articles/DatabaseBLOBs.aspx
Questo sarebbe un procedimento a doppio passaggio.

Se invece vuoi fare direttament senza scrittura su disco.
Devi creare una specie di handler, una pagina di supporto esempio GetImage.aspx?ID=3 all'interno di questa pagina vai a leggere i bytes dal campo BLOB li carichi in un MemoryStream che ributti sul Response.Output

Poi dal datalist se fai una roba tipo:

<img src="GetImage.aspx?ID=3">

vedrai apparire l'immagine.
ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

Eduardo Profilo | Newbie

Ti ringrazio posso provare,
ma visto che non sono un espertissimo di asp ti chiedevo se avessi qulache esempio o per lo meno qualche dettaglio in più sulla lettura dei byte del campo blob del database.

Ti ringrazio ,ciao!



Brainkiller Profilo | Guru

>Ti ringrazio posso provare,
>ma visto che non sono un espertissimo di asp ti chiedevo se avessi
>qulache esempio o per lo meno qualche dettaglio in più sulla
>lettura dei byte del campo blob del database.

C'è scritto nell'articolo che ti ho linkato nel post precedente.
Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

Eduardo Profilo | Newbie

Ok grazie
Ci provo ciao!

alx_81 Profilo | Guru

ciao!
Le immagini sono salvate come image/text sul DB?

in quel caso, devi fare una paginetta aspx che fa la Response.BinaryWrite del campo.

Nell'item del tuo datalist:
<asp:Image id="Img1" runat="server" ImageUrl="">

e nel code behind al binding degli item del datalist:
Img1.ImageUrl="renderImmagine.aspx?idrecord=" & Tuachiave

Nella pagina renderImmagine.aspx, codebehind, alla load, fai la query che ti torna il text in un datatable o un datareader e poi fai una:

Response.BinaryWrite(Datareader("campo"))
oppure
Response.BinaryWrite(DataTable.Rows(0).Item("campo"))

---- MODIFICA ----
Scusa brainkiller, avevo la risposta aperta da un po' e non l'ho inviata prima..
non avevo visto le tue risp. =)

Alx81 =)

http://blogs.dotnethell.it/suxstellino

Eduardo Profilo | Newbie

ciao
scusami,ho visto l'articolo ,però ho un problema .
Visto che devo scrivere il codice in vb.net non riesco a fare il cast seguente :

Dim dati As Byte()
dati = CByte(Ds.Tables(0).Rows(0).Item(2))

dove :
Ds.Tables(0).Rows(0).Item(2)

è la colonna delle immagini nel mio db ,il campo è di tipo image

mi da l'errore "Value of type 'Byte' cannot be converted to '1-dimensional array of Byte"

Hai qualche consiglio? Scusa la mia ignoranza.

Ciao grazie

Eduardo Profilo | Newbie

Per alx_81

Grazie lo stesso

Ciao!

alx_81 Profilo | Guru

Se vuoi ho un esempio già pronto da mandarti, però utilizzo il metodo che ho indicato prima.
Forse nella mia versione ci sono alcuni svantaggi.. però, se ti serve ti invio un paio di file
Così magari anche David ci dà un consiglio
Alx81 =)

http://blogs.dotnethell.it/suxstellino

Eduardo Profilo | Newbie

Ok manda ,ti ringrazio

Brainkiller Profilo | Guru

>Visto che devo scrivere il codice in vb.net non riesco a fare
>il cast seguente :
>
> Dim dati As Byte()
> dati = CByte(Ds.Tables(0).Rows(0).Item(2))
>
>dove :
> Ds.Tables(0).Rows(0).Item(2)
>

Prova così:

Dim MyData() As Byte MyData = Ds.Tables(0).Rows(0).Item(2)

ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

Eduardo Profilo | Newbie

avevo provato,
ma mi dice : direct cast is not valid

ciao

Brainkiller Profilo | Guru

>avevo provato,
>ma mi dice : direct cast is not valid

L'esempio è questo qui:
http://support.microsoft.com/?id=308042

Dovrebbe funzionare non l'ho provato, ma in questo caso andrei sulla fiducia.
ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

Eduardo Profilo | Newbie

Cosi funziona salva l'immagine.
Ma ho utilizzato un immagine già inserita nel database Northwind nella tabella Categories me la salva nel formato che voglio io ma non si vede.Esce quella x come quando un'immagine non è disponibile.
Provo con altre immagini.

Grazie tante ,se poi hai qualche consiglio su questo,che ben venga.

Sei stato d'aiuto grazie ancora ciao

alx_81 Profilo | Guru

Eccoti l'esempio..
Questa è una pagina che si chiama showimage.aspx:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Poi ho una pagina che ha un datagrid, ma la problematica è simile..
Nella griglia c'è un itemtemplate:

<ItemTemplate> <asp:Image id="ImgLogo" Runat="server" Width="50"></asp:Image> </ItemTemplate>

E nel code behind, all'evento itemdatabound del datagrid:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Fammi sapere..
Alx81 =)

http://blogs.dotnethell.it/suxstellino

Eduardo Profilo | Newbie

Grazie
adesso non posso provare.
Cmq forse ho risolto con il consiglio di Brainkiller.

Appena posso provo anche il tuo codice e ti faccio sapere.

Ciao e grazie ancora

alx_81 Profilo | Guru

perfetto..
ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino

Brainkiller Profilo | Guru

>Grazie
>adesso non posso provare.
>Cmq forse ho risolto con il consiglio di Brainkiller.
>Appena posso provo anche il tuo codice e ti faccio sapere.

Se ti è servita la risposta, accettla, cliccando sull'apposito link grazie.
Così il thread viene marcato come risolto.
CIao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5