Hola!
Tengo un DataGridView en el que elenco una serie de archivos binarios (PDF), que se encuentran guardados en una tabla de un database MySQL.
Las columnas de la tabla son las siguientes (El archivo binario se encuentra en la columna allegato):
matricola int(11)
matricola_old int(11)
nome_file text
file_size decimal(20,0)
allegato longblob
extension text
data text
Mi problema es que no se como hacer para descargar estos archivos, intente hacer que una de las columnas tenga la propiedad DataGridViewLinkColumn, o bien agregar otra columna con un button pero la verdad es que me estoy perdiendo...
Este es el codigo que uso, donde carga los archivos binarios:
Dim Query As New MySqlCommand
Dim Conexion As MySqlConnection
Dim Consultar As MySqlDataReader
Dim Sql As String = "Server=172.XX.XX.XX;User Id=XXX;Password=XXX;Database=sicurezza"
Dim query_Adapter2 As String
If ComboBox7.Text = "matricola_old" Then
query_Adapter2 = "SELECT dipendenti_allegati.nome_file, dipendenti_allegati.data, dipendenti_allegati.allegato As Allegato FROM dipendenti_allegati INNER JOIN dipendenti ON dipendenti_allegati.matricola = dipendenti.matricola WHERE dipendenti." & ComboBox7.Text & " = " & TextBox17.Text & ""
Else
query_Adapter2 = "SELECT dipendenti_allegati.nome_file, dipendenti_allegati.data, dipendenti_allegati.allegato As Allegato FROM dipendenti_allegati INNER JOIN dipendenti ON dipendenti_allegati.matricola = dipendenti.matricola WHERE dipendenti." & ComboBox7.Text & " LIKE '%" & TextBox17.Text & "%'"
End If
Conexion = New MySqlConnection()
Conexion.ConnectionString = Sql
Conexion.Open()
Query.CommandText = query_Adapter2
Query.Connection = Conexion
Consultar = Query.ExecuteReader
While Consultar.Read
Dim File As String = Consultar(0).ToString
Dim Data As String = Consultar(1).ToString
Dim texto As String = Consultar(2).ToString
Dim Allegato As String = Consultar(3).ToString
DataGridView4.Rows.Add(File, texto, Data, Allegato)
DataGridView4.Refresh()
End While
Por favor alguien me podría ayudar o darme alguna sugerencia?
Gracias
Saludos!
Aquí la solución por si a alguien mas puede ser de ayuda:
Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click
Dim conn As New MySqlConnection
Dim cmd As New MySqlCommand
Dim myData As MySqlDataReader
Dim SQL As String
Dim rawData() As Byte
Dim FileSize As UInt32
Dim fs As FileStream
conn.ConnectionString = "Server=8.8.8.8;User Id=xxx;Password=xxxx;Database=sicurezza"
SQL = "select allegato, file_size, nome_file from dipendenti_allegati where nome_file=" _
& """Licenze Kaspersky 2014.pdf"""
Try
conn.Open()
cmd.Connection = conn
cmd.CommandText = SQL
myData = cmd.ExecuteReader
If Not myData.HasRows Then Throw New Exception("There are no BLOBs to save")
myData.Read()
FileSize = myData.GetUInt32(myData.GetOrdinal("file_size"))
rawData = New Byte(FileSize) {}
myData.GetBytes(myData.GetOrdinal("allegato"), 0, rawData, 0, FileSize)
fs = New FileStream("C:\Users\yo\Desktop\" & myData.GetString(myData.GetOrdinal("nome_file")), FileMode.OpenOrCreate, FileAccess.Write)
fs.Write(rawData, 0, FileSize)
fs.Close()
MessageBox.Show("Archivo guardado!", "OK!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
myData.Close()
conn.Close()
Catch ex As Exception
MessageBox.Show("Error: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Saludos! ;-)
Hola espero me puedas ayudar, lo que yo intento hacer es algo parecido pero que me muestre en un treeview carpetas y subcarpetas de mi pc en una ruta especifica y que me despliege los archivos PDF al dar doble click me lo descarge o me de la opcion de guardarlo me seria de mucha ayuda un ejemplo o si me puedes contactar por facebook.
Gracias
Hola,
Fijate en este ejemplo, creo que podría ayudarte en lo que intentas hacer.
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=8238&lngWId=10 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=8238&lngWId=10)
Saludos!