Cargar/Descargar Archivos Desde y Hacia una Columna ‘image’ SQL

 


Friend Class Ejemplo


    Private _ms As MemoryStream  ‘Carga/descarga de archivos SQL


    Private _Fs As FileStream    ’Manejo archivos en memoria


    Private _By() As Byte = Nothing  ‘Array de intercambio


 


   


    ‘Guardar el Documento


    Private Sub Doc_Almacenar(ByVal Origen As String, ByVal Nombre As String)


        Try


            ‘crear un nuevo fstrm con el archivo apuntado en la ruta


            ‘contenida en el origen


            _Fs = New FileStream(Origen, FileMode.Open, FileAccess.Read)


            ‘redimensionarlo y adaptarlo a su longitud


            ReDim _By(_Fs.Length)


            ‘convertir el fstrm en un array de bytes


            _Fs.Read(_By, 0, _Fs.Length)


            ‘Archivos es el tableadapter


            ‘almacenar array en una imagen binaria Sql


            Archivos.Insert(Nombre, _By)


            _Fs.Close()               ‘cerrar el fstrm


            _Fs.Dispose()             ‘Liberarlo


        Catch ex As Exception


            ‘En caso de excepcion…


            Me.lblExcepciones.Text = “DocAlmacenar: “ + ex.Message


        End Try


    End Sub


   


    ‘Cargar documento desde la col imagen de SQL


    Private Sub Doc_Recuperar(ByVal Nombre As String)


        Try


            ‘Recuperar imagen de SQL a un array intermedio


            If Nombre.Length > 0 Then


                ‘el table adapter devuelve una imagen


                ‘resultante de la consulta ‘Recuperar(Col Nombre)’


                Dim Buffer() As Byte = Archivos.Recuperar(Nombre).Rows(0).Item(“Imagen”)


                ‘Crear un nuevo archivo


                _Fs = New FileStream(“Documento.tmp”, FileMode.Create, FileAccess.Write)


                ‘escribirlo a partir del array intermedio


                _Fs.Write(Buffer, 0, Buffer.Length)


                _Fs.Close()       ‘Cerrar el fstrm


                _Fs.Dispose()     ‘Liberarlo


            End If


        Catch ex As Exception


            ‘En caso de excepcion, reportar


            Me.lblExcepciones.Text = “DocRecuperar: “ + ex.Message


            Try


                My.Computer.FileSystem.DeleteFile(“Documento.tmp”)


            Catch ex2 As Exception


                Me.lblExcepciones.Text = “Eliminar: “ + ex.Message


            End Try


        End Try


    End Sub


End Class