Ver Mensaje Individual
  #7 (permalink)  
Antiguo 05/03/2009, 07:32
Avatar de wladtepes
wladtepes
 
Fecha de Ingreso: febrero-2008
Mensajes: 140
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Imágenes en servidor

HOLA YO ENCONTRADO DOS FUNCIONES PARA ALMACENAR IMAGENES EN SQL SERVER ,PRIMERO SE DEBE DE CREAR UN REGISTRO CON UN ID Y LUEGO LA IMAGEN SE CARGA EN FUNCION DEL ID ALMACENADO ESPERO QUE TE SEA UTIL




PRIMERA FUNCION PARA GRABAR LA IMAGEN

Código PHP:
Private Function GrabarImagen(ByVal prmID_CLIENTE As String) As Boolean


        
'***************************************************************************************
        '
*********************************** FUNCION GRABAR IMAGEN  ****************************       
        
'***************************************************************************************

        Dim cn As New SqlConnection(conSQL)
        cn.Open()

        Dim SaveImage As Boolean = False
        Dim curFileName As String = ""
        Try
            '
Buscamos la imagen a grabar
            Dim openDlg 
As OpenFileDialog = New OpenFileDialog()
'*******TIPOS DE FORMATOS DE IMAGEN QUE PUEDES USAR 
            openDlg.Filter = "Todos (*.*)|*.*|Imagenes|*.jpg;*.gif;*.png;*.bmp" 
            Dim filter As String = openDlg.Filter
            openDlg.Title = "Selecccionar la imagen"
            If (openDlg.ShowDialog() = Windows.Forms.DialogResult.OK) Then
                curFileName = openDlg.FileName
                SaveImage = True
            Else
                Return False
                Exit Function
            End If
            If SaveImage = True Then

                '
CARGAR FOTOGRAFIA
                Dim fsFoto 
As FileStream
                fsFoto 
= New FileStream(curFileName, FileMode.Open)
                
Dim fiFoto As FileInfo = New FileInfo(curFileName)
                
Dim Temp As Long = fiFoto.Length
                Dim lung 
As Long = Convert.ToInt32(Temp)
                
Dim picture(lung) As Byte
                fsFoto
.Read(picture, 0, lung)
                
fsFoto.Close()

'*****LLAMADO AL PROCEDIMIENTO EN SQL QUE GRABARA LA IMAGEN 
                Dim cmdFoto As New SqlCommand("TRABAJADOR_1", cn)
                cmdFoto.CommandType = CommandType.StoredProcedure
'
*****DATOS DEL PROCEDIMINTO 
                Dim sql_ID_Cliente 
= New SqlParameter("@CD", prmID_CLIENTE)
                
Dim sql_FOTO As New SqlParameter("@IMAGEN", SqlDbType.Image)
                
sql_FOTO.Value = picture
                cmdFoto
.Parameters.Add(sql_ID_Cliente)
                
cmdFoto.Parameters.Add(sql_FOTO)
                
cmdFoto.ExecuteNonQuery()
                
cmdFoto.Dispose()
                
sql_FOTO = Nothing
                picture 
= Nothing
                
Return True
                
Exit Function
            
End If
        Catch 
ex As Exception
            MessageBox
.Show(ex.Message)
            Return 
False
        End 
Try
    
End Function 



SEGUNDA FUNCION PARA MOSTRAR LA IMAGEN


Código PHP:
 Private Sub CargarImagen(ByVal prmID_CLIENTE As String)

        
'***************************************************************************************
        '
*********************************** CARGAR IMAGEN  ************************************       
        
'***************************************************************************************

        Dim cn As New SqlConnection(conSQL)
        cn.Open()
        Try

'
*******BUSCAR LA IMAGEN EN TU BASE DE DATOS 

            Dim cmdFoto 
As New SqlCommand("select imagen from TRABAJADOR  where CD = '" & prmID_CLIENTE & "'")
            
cmdFoto.Connection = cn
            cmdFoto
.CommandType = CommandType.Text
            Dim daFoto 
As New SqlDataAdapter(cmdFoto)
            
Dim dsFoto As New DataSet()
            
daFoto.Fill(dsFoto)
            
Dim bits As Byte() = CType(dsFoto.Tables(0).Rows(0).Item(0), Byte())
            
Dim memorybits As New MemoryStream(bits)
            
Dim bitmap As New Bitmap(memorybits)
            
picFoto.Image = bitmap
            cmdFoto
.Dispose()
            
dsFoto.Dispose()
            
cmdFoto.Dispose()
        Catch 
EX As Exception

            MsgBox
("NO HAY IMAGEN PARA ESTE REGISTRO ", "16", "No se puede mostrar fotografia")
            
picFoto.Image = Nothing
            foto
.Refresh()
        
End Try
    
End Sub 

PROCEDIMIENTO SQL SERVER

Código PHP:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE 
[dbo].[TRABAJADOR_1]
(
@
CD numeric(18, 0),
@
IMAGEN image
)
AS
UPDATE TRABAJADOR
SET IMAGEN
= @IMAGEN
where CD 
= @CD 






''*****BOTON CARGAR IMAGEN

Código PHP:
  Private Sub Bcargar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bcargar.Click

        
'***************************************************************************************
        '
*********************************** CARGAR IMAGEN ************************************       
        
'***************************************************************************************

        Dim cn As New SqlConnection(conSQL)
        cn.Open()

        Dim sqlconsulta As String

'
ESTE EJEMPLO LO USE PARA UN FORMULARIO DE REGISTRO DE TRABAJADORES  
'LA COSA ES QUE LAS FUNCIONES SE UTILIZAN CON UN ID Y EN FUNCION DE ESO 
'
SE CARGA LA IMAGEN 

        sqlconsulta 
= "select CD from TRABAJADOR where rut_tra= " & Trut1.Text
        Dim ocmd 
As New SqlCommand(sqlconsulta, cn)
        
Dim odr As SqlDataReader
        odr 
= ocmd.ExecuteReader()
        If 
odr.Read() Then
            TCD
.Text() = odr.Item("CD").ToString()
        
End If
        
odr.Close()

ACA ENVIA EL ID ENCONTRADO  A LA FUNCION Y CARGA LA IMAGEN 

        
If GrabarImagen(TCD.Text) Then
            MessageBox
.Show("Imagen almacenada", "Grabar Imagen", MessageBoxButtons.OK, MessageBoxIcon.Information)
            
CargarImagen(TCD.Text)
        
End If

        
MsgBox("EDICION TERMINADA ", "64", "Operacion exitosa")
        
Bcargar.Enabled = False

    End Sub