VB.NET - Caricamento - Download - File Database MySQL - Percentuale C...

lunedì 21 luglio 2014 - 17.20
Tag Elenco Tags  VB.NET

aizen Profilo | Newbie

Salve a tutti.
Per caricare un file in un database MySQL uso questo codice:

codice:
Dim conn As New MySqlConnection
Dim cmd As New MySqlCommand


Dim SQL As String


Dim FileSize As UInt32
Dim rawData() As Byte
Dim fs As FileStream




conn.ConnectionString = "server=ip;" _
& "uid=user;" _
& "pwd=pass;" _
& "database=test"


OpenFileDialog1.FileName = ""
OpenFileDialog1.Filter = "txt files (*.jpg)|*.png|All files (*.*)|*.*"
If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then


Try


fs = New FileStream(OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read)
FileSize = fs.Length


rawData = New Byte(FileSize) {}
fs.Read(rawData, 0, FileSize)
fs.Close()


conn.Open()


SQL = "INSERT INTO upload (file_id,file_name,file_size,file) VALUES(NULL, ?file_name, ?file_size, ?file)"


cmd.Connection = conn
cmd.CommandText = SQL
cmd.Parameters.Add("?file_name", IO.Path.GetFileName(OpenFileDialog1.FileName))
cmd.Parameters.Add("?file_size", FileSize)
cmd.Parameters.Add("?file", rawData)


cmd.ExecuteNonQuery()


MessageBox.Show("File Inserted into database successfully!", _
"Success!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)


conn.Close()
Catch ex As Exception
MessageBox.Show("There was an error: " & ex.Message, "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try


End If
Per scaricare un file in un database MySQL uso questo codice:

codice:
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=ip;" _
& "uid=user;" _
& "pwd=pass;" _
& "database=test"


SQL = "SELECT file_name, file_size, file FROM upload where file_id='2';"


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("file"), 0, rawData, 0, FileSize)


fs = New FileStream("C:\" & myData.GetString(myData.GetOrdinal("file_name")), FileMode.OpenOrCreate, FileAccess.Write)
fs.Write(rawData, 0, FileSize)
fs.Close()


MessageBox.Show("File successfully written to disk!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)


myData.Close()
conn.Close()
Catch ex As Exception
MessageBox.Show("There was an error: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Vorrei visualizzare la percentuale di caricamento del file in una label ed anche in una progressbar
Come posso fare?
Grazie in anticipo

ysdemarc Profilo | Expert

Hai già provato a scrivere il tuo fs.write diversamente, ossia (scrivo in c# per comodità):


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

naturalmente se è un file grosso di conviene usare delle equivalenze per la progress bar e rapportare i valori tra il minimum ed il maximum
Vincenzo
Programmatore sbilenco
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5