Foros del Web » Programación para mayores de 30 ;) » .NET »

Traer imagende base de datos...

Estas en el tema de Traer imagende base de datos... en el foro de .NET en Foros del Web. Bueno mi pregunta es muy especifica. Estoy trabajando con ASP.NET y tengo una base de datos SQl que tiene un campo Blob para guardar una ...
  #1 (permalink)  
Antiguo 23/07/2005, 11:00
Avatar de davidalcaraz  
Fecha de Ingreso: abril-2005
Mensajes: 34
Antigüedad: 19 años
Puntos: 0
Traer imagende base de datos...

Bueno mi pregunta es muy especifica. Estoy trabajando con ASP.NET y tengo una base de datos SQl que tiene un campo Blob para guardar una imagen (Cierto ya se asi no se hace que se ponen en carpetas y se guarda la direccion) pero buena es pura necedad y creo que habemos mas de una por aqui je je... Bien el codigo que la almacena funciona bien...

Dim cn As New SqlConnection(strCn)
Dim cmd As New SqlCommand("INSERT INTO BLOBTest (BLOBData) " & "VALUES (@BLOBData)", cn)
'Dim strBLOBFilePath As String = "C:\Documents and Settings\david\Mis documentos\images\dfangel.jpg"
Dim strBLOBFilePath As String = UploadFile.Value.ToString
Dim fsBLOBFile As New FileStream(strBLOBFilePath, FileMode.Open, FileAccess.Read)
Dim bytBLOBData(fsBLOBFile.Length() - 1) As Byte
fsBLOBFile.Read(bytBLOBData, 0, bytBLOBData.Length)
fsBLOBFile.Close()
Dim prm As New SqlParameter("@BLOBData", SqlDbType.VarBinary, _
bytBLOBData.Length, ParameterDirection.Input, False, _
0, 0, Nothing, DataRowVersion.Current, bytBLOBData)
cmd.Parameters.Add(prm)
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()

-----------------------------------------------------------------------

E inclusive puedo cargar la imagen que ya esta en la bdd en una aplicacion Win Form
Dim cn As New SqlConnection(strCn)
Dim cmd As New SqlCommand("SELECT BLOBID, " & _
"BLOBData FROM BLOBTest ORDER BY BLOBID", cn)
Dim da As New SqlDataAdapter(cmd)
Dim ds As New DataSet()
da.Fill(ds, "BLOBTest")
Dim c As Integer = ds.Tables("BLOBTest").Rows.Count
If c > 0 Then
Dim bytBLOBData() As Byte = ds.Tables("BLOBTest").Rows(c - 1)("BLOBData")
Dim stmBLOBData As New MemoryStream(bytBLOBData)
PicBlob.Image = Image.FromStream(stmBLOBData) End If

--------------------------------------------------------------
El problema viene cuando hago lo mismo para cargar la imagen en una aspx
ya que el objeto image no tiene propiedad Image, tiene ImageURL y pues no se como asignarle el objeto strem que trigo en memoria al image.

Dim cn As New SqlConnection(strCn)
Dim cmd As New SqlCommand("SELECT BLOBID, " & "BLOBData FROM BLOBTest ORDER BY BLOBID", cn)
Dim da As New SqlDataAdapter(cmd)
Dim ds As New DataSet()
da.Fill(ds, "BLOBTest")
Dim c As Integer = ds.Tables("BLOBTest").Rows.Count
'If c > 0 Then
Dim bytBLOBData() As Byte = ds.Tables("BLOBTest").Rows(c - 1)("BLOBData")
Dim stmBLOBData As New MemoryStream(bytBLOBData)


PicBlob.____________ = Image.FromStream(stmBLOBData)

Ya lei varios articulos entre ellos el de como ligar un objeto al datagrid adicionandole una plantilla y metiendo ahi el image modificando la propiedad Databinding pero tampo funciono. (Solo para otro tipo de campos si)

Y bueno la verdad estoy `casi por tirar la toalla y regresarme a gwbasic
Considero que esto deberia ser una labor de rutina para un lenguaje como VB.NET sin embargo veo que mucha gente sufre de lo mismo.

Espero alguien pueda hecharme una mano que se los agradecere muchisisisisimo
  #2 (permalink)  
Antiguo 02/08/2005, 08:45
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 18 años, 9 meses
Puntos: 0
yo tengo una solucion
para esto pero consta de tres paginas, una de ellas en asp y la base de datos que uso esta en acces...
si la necesitas escribeme a [email protected] por que es medio larga para publicarla aqui..
pero mi solucion funciona a las mil maravillas.
  #3 (permalink)  
Antiguo 02/08/2005, 10:48
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
si la necesitas escribeme a [email protected] por que es medio larga para publicarla aqui..
La idea es publicar una solucion donde todos podamos compartirla y aprender fiend... ...

en fin...

La forma en que podrías hacerlo es que si ya tienes en tu variable byte la información de tu imágen es pasarlo a tu memorystream (es solo una idea) y declarar un variable de tipo bitmap para recibir el contenido

Ejemplo:

Cita:
....
....
Dim bytBLOBData() As Byte = ds.Tables("BLOBTest").Rows(c - 1)("BLOBData")
Dim b as Bitmap = Ctype(Bitmap.FromStream( new MemoryStream(bytBLOBData)),Bitmap)
'Despues la salvas en un path temporal (si quieres)
b.Save("miImagen.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
'teniendo esa ruta se la pasas a tu objeto Imagen
...
..
Es solo una forma de hacerlo.. espero que te sirva..

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 09/08/2005, 15:20
Avatar de davidalcaraz  
Fecha de Ingreso: abril-2005
Mensajes: 34
Antigüedad: 19 años
Puntos: 0
Pues me tarde mucho con esto pero es que se presento algo mas importante...
Efectivamente ya pude mostrar la imagen en mi pagina (por fin) como me indico Rookt, aunque no se si a la hora de subir mi aplicacion tenga algun tiupo de restriccion al guardar esa imagen.
Existira alguna manera de asignar el objeto b (Bitmap) al objeto image de una manera directa?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:55.