Oppure

Loading
17/08/09 12:11
__BlackworM__
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:
aaa
17/08/09 12:46
ProgrMan93
Di solito per risolvere questo genere di problemi si usano i thread.
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:

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
aaa
17/08/09 16:01
ProgrMan93
di niente
aaa