Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Upload di un file blocco totale del programma
Forum - C# / VB.NET - Upload di un file blocco totale del programma

Avatar
__BlackworM__ (Member)
Pro


Messaggi: 110
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 14:11
Lunedì, 17/08/2009
Ciao amici e scusate ancora in questi giorni il forum di vb.net pullula di miei diversi problemi....
bhè comunque, io sto creando un uploader in vb.net e quando carico il file in remoto il form non lo devo toccare appena ci clicco su col mouse esce la solita scritta (non risponde) è vero in realtà sta comunque caricando il file in remoto ma è brutto, cosa mi consigliate di fare ?
sono neofita di vb.net quindi non mi bastonate :rofl:

PM Quote
Avatar
ProgrMan93 (Ex-Member)
Pro


Messaggi: 68
Iscritto: 25/06/2008

Segnala al moderatore
Postato alle 14:46
Lunedì, 17/08/2009
Di solito per risolvere questo genere di problemi si usano i thread.
posta il codice

PM Quote
Avatar
__BlackworM__ (Member)
Pro


Messaggi: 110
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 14:52
Lunedì, 17/08/2009
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.

Codice sorgente - presumibilmente VB.NET

  1. Imports System.IO
  2.  
  3. Public Class Form1
  4.  
  5.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  6.  
  7.         For Each Lst.SelectedItems In
  8.  
  9.         Next
  10.  
  11.         timer.Start()
  12.  
  13.         Dim url As String
  14.         url = "ftp://" & ftp.Text & "/uploadfoto/" & Path.GetFileName(nome.Text)
  15.  
  16.         While Lst.SelectedItems.Count > 0
  17.  
  18.         End While
  19.  
  20.         Dim clsRequest As System.Net.FtpWebRequest = _
  21.         DirectCast(System.Net.WebRequest.Create(url), System.Net.FtpWebRequest)
  22.  
  23.         clsRequest.Credentials = New System.Net.NetworkCredential(user.Text, pass.Text)
  24.         clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
  25.         clsRequest.Timeout = -1
  26.  
  27.         ' read in file...
  28.         Dim bFile() As Byte = System.IO.File.ReadAllBytes(nome.Text)
  29.  
  30.         ' upload file...
  31.         Dim clsStream As System.IO.Stream = _
  32.         clsRequest.GetRequestStream()
  33.         clsStream.Write(bFile, 0, bFile.Length)
  34.         clsStream.Close()
  35.         clsStream.Dispose()
  36.         ProgressBar1.Value = 1000
  37.         timer.Stop()
  38.  
  39.     End Sub
  40.  
  41.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  42.         OpenFileDialog1.ShowDialog()
  43.         nome.Text = OpenFileDialog1.FileName()
  44.  
  45.     End Sub
  46.  
  47.     Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  48.         'FolderOpen.InitialDirectory = "C:\Users\All User\Music"
  49.         FolderOpen.Multiselect = True
  50.         FolderOpen.Title = "Scegli i file da caricare in remoto !"
  51.         'FolderOpen.Filter = "Mpeg Audio Files| *.mp3"
  52.  
  53.         ' Make sure the User clicked OK and not Cancel
  54.         If (FolderOpen.ShowDialog() = Windows.Forms.DialogResult.OK) Then
  55.             ' Make sure the User selected one or more files
  56.             If (FolderOpen.FileNames.Length > 0) Then
  57.                 ' Loop through the list of selected filenames and add each one to your listbox
  58.                 For Each strFileName As String In FolderOpen.FileNames
  59.                     Lst.Items.Add(strFileName)
  60.                 Next
  61.             End If
  62.         End If
  63.     End Sub
  64.  
  65.     Private Sub timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timer.Tick
  66.         If ProgressBar1.Value = 100 Then
  67.             ProgressBar1.Value = 0
  68.         End If
  69.         ProgressBar1.Value = ProgressBar1.Value + 1
  70.     End Sub
  71.  
  72.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  73.         ProgressBar1.Maximum = 1000
  74.         ProgressBar1.Minimum = 0
  75.         ProgressBar1.Value = 0
  76.     End Sub
  77.  
  78. End Class


PM Quote
Avatar
ProgrMan93 (Ex-Member)
Pro


Messaggi: 68
Iscritto: 25/06/2008

Segnala al moderatore
Postato alle 15:14
Lunedì, 17/08/2009
Per il problema di caricare più file puoi inserirli in una collezione o in una listBox:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         'Qui presupposto che gli elementi di cui fare l'upload siano
  3.         'stati caricati in una listBox per elementi intendo il nome del file
  4.         For Each Item As String In ListBox1.Items
  5.             Timer.Start()
  6.  
  7.             Dim url As String
  8.        
  9.             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.
  10.  
  11.  
  12.             Dim clsRequest As System.Net.FtpWebRequest = _
  13.             DirectCast(System.Net.WebRequest.Create(url), System.Net.FtpWebRequest)
  14.  
  15.             clsRequest.Credentials = New System.Net.NetworkCredential(user.Text, pass.Text)
  16.             clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
  17.             clsRequest.Timeout = -1
  18.  
  19.             'stessa cosa qui
  20.             Dim bFile() As Byte = System.IO.File.ReadAllBytes(Item)
  21.  
  22.             ' upload file...
  23.             Dim clsStream As System.IO.Stream = _
  24.             clsRequest.GetRequestStream()
  25.             clsStream.Write(bFile, 0, bFile.Length)
  26.             clsStream.Close()
  27.             clsStream.Dispose()
  28.             ProgressBar1.Value = 1000
  29.             Timer.Stop()
  30.         Next
  31.  
  32.     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 il 17/08/2009 alle 15:16
PM Quote
Avatar
__BlackworM__ (Member)
Pro


Messaggi: 110
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 15:51
Lunedì, 17/08/2009
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

PM Quote
Avatar
ProgrMan93 (Ex-Member)
Pro


Messaggi: 68
Iscritto: 25/06/2008

Segnala al moderatore
Postato alle 18:01
Lunedì, 17/08/2009
di niente

PM Quote