Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/07/2005, 11:00
Avatar de davidalcaraz
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