17/08/09 12:46
ProgrMan93
Di solito per risolvere questo genere di problemi si usano i thread.
posta il codice
posta il codice
aaa
17/08/09 12:52
__BlackworM__
Ecco questo è tutto il codice un pò confuso ma poi lo aggiusterò per bene, intanto visto che vedi il codice oltre al fatto che si blocca vorrei che l'upload sia fatto di più file e non di un singolo, intanto io cerco su manuale ma se qualcuno mi velocizza il lavoro sarebbe meglio.
Imports System.IO Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click For Each Lst.SelectedItems In Next timer.Start() Dim url As String url = "ftp://" & ftp.Text & "/uploadfoto/" & Path.GetFileName(nome.Text) While Lst.SelectedItems.Count > 0 End While Dim clsRequest As System.Net.FtpWebRequest = _ DirectCast(System.Net.WebRequest.Create(url), System.Net.FtpWebRequest) clsRequest.Credentials = New System.Net.NetworkCredential(user.Text, pass.Text) clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile clsRequest.Timeout = -1 ' read in file... Dim bFile() As Byte = System.IO.File.ReadAllBytes(nome.Text) ' upload file... Dim clsStream As System.IO.Stream = _ clsRequest.GetRequestStream() clsStream.Write(bFile, 0, bFile.Length) clsStream.Close() clsStream.Dispose() ProgressBar1.Value = 1000 timer.Stop() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click OpenFileDialog1.ShowDialog() nome.Text = OpenFileDialog1.FileName() End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 'FolderOpen.InitialDirectory = "C:\Users\All User\Music" FolderOpen.Multiselect = True FolderOpen.Title = "Scegli i file da caricare in remoto !" 'FolderOpen.Filter = "Mpeg Audio Files| *.mp3" ' Make sure the User clicked OK and not Cancel If (FolderOpen.ShowDialog() = Windows.Forms.DialogResult.OK) Then ' Make sure the User selected one or more files If (FolderOpen.FileNames.Length > 0) Then ' Loop through the list of selected filenames and add each one to your listbox For Each strFileName As String In FolderOpen.FileNames Lst.Items.Add(strFileName) Next End If End If End Sub Private Sub timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timer.Tick If ProgressBar1.Value = 100 Then ProgressBar1.Value = 0 End If ProgressBar1.Value = ProgressBar1.Value + 1 End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ProgressBar1.Maximum = 1000 ProgressBar1.Minimum = 0 ProgressBar1.Value = 0 End Sub End Class
aaa
17/08/09 13:14
ProgrMan93
Per il problema di caricare più file puoi inserirli in una collezione o in una listBox:
per quanto riguarda il blocco del programma durante l'upload, come ho detto prima bisogna usare i thread, utilizzando essi la faccenda diventa complicati in quanto non possono essere chiamare metodi o funzioni che sono al di fuori del thread quindi bisognerebbe riscrivere gran parte del tuo codice.
Il mio consiglio è di lasciare che il prgramma si blocchi
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Qui presupposto che gli elementi di cui fare l'upload siano 'stati caricati in una listBox per elementi intendo il nome del file For Each Item As String In ListBox1.Items Timer.Start() Dim url As String url = "ftp://" & ftp.Text & "/uploadfoto/" & Path.GetFileName(Item)'quindi la directory del file viene presa da item il cui valore corrisponde al nome del file che di cui si sta tentando di fare l'upload. Dim clsRequest As System.Net.FtpWebRequest = _ DirectCast(System.Net.WebRequest.Create(url), System.Net.FtpWebRequest) clsRequest.Credentials = New System.Net.NetworkCredential(user.Text, pass.Text) clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile clsRequest.Timeout = -1 'stessa cosa qui Dim bFile() As Byte = System.IO.File.ReadAllBytes(Item) ' upload file... Dim clsStream As System.IO.Stream = _ clsRequest.GetRequestStream() clsStream.Write(bFile, 0, bFile.Length) clsStream.Close() clsStream.Dispose() ProgressBar1.Value = 1000 Timer.Stop() Next End Sub
per quanto riguarda il blocco del programma durante l'upload, come ho detto prima bisogna usare i thread, utilizzando essi la faccenda diventa complicati in quanto non possono essere chiamare metodi o funzioni che sono al di fuori del thread quindi bisognerebbe riscrivere gran parte del tuo codice.
Il mio consiglio è di lasciare che il prgramma si blocchi
Ultima modifica effettuata da ProgrMan93 17/08/09 13:16
aaa
17/08/09 13:51
__BlackworM__
ti ringrazio immensamente adesso va come dico io per l'upload, per quanto riguarda il blocco invece ho messo un messagge box al di fuori del foreach e quindi non mi da la possibilità di eseguire operazione durante il caricamento ma non mi visualizza nemmeno non risponde diciamo che resta immobile.
Grazie Mille davvero
Grazie Mille davvero
aaa