IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[vb.net] Télécharger les fichiers d'une liste les uns après les autres


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de tbdarkspirit
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 53
    Par défaut [vb.net] Télécharger les fichiers d'une liste les uns après les autres
    Bonjour à tous,

    voilà j'ai un tit problème...

    J'ai utiliser cette source (qui au passage est très bien réalisée merci à l'auteur!) pour faire un programme en utilisant la 3ème méthode.

    J'ai voulu adapté la source à mon utilisation, mais malheureusement je n'y parviens pas.

    J'ai ajouter une checkedlistbox dans la form et fait une boucle pour que ca télécharge les uns après les autres les fichiers cochés.

    Mais voilà, mon programme essaye de tout télécharger en même temps et forcement ca bug...

    voici le code de ma boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    If Me.DLlisteCheckedListBox.CheckedItems.Count <> 0 Then
                Dim x As Integer
                For x = 0 To Me.DLlisteCheckedListBox.CheckedItems.Count - 1
                    If My.Computer.FileSystem.FileExists(T_Path.Text & "\" & version) = False Then
                        If T_Path.Text = "" Then
                            MsgBox("Veuillez remplir tous les champs")
                        Else
                            Dl.Donwload_File_3("URL", "destination", False) 'lance la 3eme methode
                            Me.DLButton.Enabled = False
                            Me.cancelButton1.Enabled = True
     
                        End If
                    Else
                        If T_Path.Text = "" Then
                            MsgBox("Veuillez remplir tous les champs")
                        Else
                            If MessageBox.Show("Le fichier existe déjà. Voulez-vous le remplacer?", "erreur", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                                My.Computer.FileSystem.DeleteFile(T_Path.Text & "\" & version, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.DeletePermanently, FileIO.UICancelOption.DoNothing)
                                Dl.Donwload_File_3"URL", "destination", False) 'lance la 3eme methode
                                Me.DLButton.Enabled = False
                                Me.cancelButton1.Enabled = True
     
                            Else
                                Exit Sub
                            End If
                        End If
                    End If
     
                Next x
            Else
                MessageBox.Show("Veuillez cocher 1 case...", "erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If
    il faudrait que le programme attende que le téléchargement en cours soit terminé pour passer au suivant...

    mais je ne sais pas comment m'y prendre...

    quelqu'un peut-il m'aider?

    merci d'avance

  2. #2
    Membre averti Avatar de tbdarkspirit
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 53
    Par défaut
    un tit up svp.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    il nous faudrait le code de Dl.Donwload_File_3

    sinon dans ton code tu fais

    si machin alors
    [_ pavé de code _]
    sinon message
    fin si

    il est parfois plus lisible de faire

    si pas machin alors
    message
    exit sub
    fin si

    pavé de code

    ca fait moins d'imbrication
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre averti Avatar de tbdarkspirit
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 53
    Par défaut
    Merci sperot51 pour ta réponse.

    alors le code de Dl.Donwload_File_3 est présent dans le lien de mon premier post.

    Mais pour ceux qui n'ont pas envie de la télécharger (ce que je comprend tout à fait xD) je le met ici (je met toute la classe sinon je pense pas que ca soit très utile) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Public Class Download_File
     
        '3 events :
        '- Pour le début du télechargement (debut_dl)
        ' pour la progression du téléchargement (progression_dl)
        ' pour la fin du téléchargement (fin_dl)
     
        Public Event Debut_Dl(ByVal Taille_Fichier As Long, ByVal resumepos As Long, ByVal Temps_Depart As Long)
        Public Event Progression_Dl(ByVal actual_pos As Long)
        Public Event Fin_Dl(ByVal actual_pos As Long)
     
        Dim b As Boolean 'indique si l'utiliateur veut annulé son dl
        Dim bresume As Boolean
        Dim readstr As IO.Stream
        Dim lenfile As Long
        Dim bytesarr(102400) As Byte
        Dim timestart As Long
        Dim tmppos As Long
        Dim posresume As Long
        Dim pathname As String
        Dim urlz As String
     
        Public Sub Donwload_File_3(ByVal Source As String, ByVal Path As String, ByVal IsResume As Boolean)
            b = True
            bresume = IsResume
            timestart = 0
            pathname = Path
            urlz = Source
            Dim threadz As New System.Threading.Thread(AddressOf thread_launch)
            threadz.Start()
        End Sub
     
        Private Sub thread_launch() 'thread pour lancer le téléchargement
            Get_file(urlz, pathname) 'appel de la procédure de dl
        End Sub
     
        Public Sub Cancel_Dl() 'pour annuler le téléchargement
            b = False
        End Sub
     
        Private Sub Get_file(ByVal fileurl As String, ByVal filepath As String, Optional ByVal proxy As String = Nothing, Optional ByVal proxyport As Integer = Nothing)
            If proxy <> Nothing And proxyport <> Nothing Then
                Dim hproxy As New WebProxy(proxy, proxyport)
                GlobalProxySelection.Select = hproxy
            End If
     
            Dim hwebrequest As System.Net.HttpWebRequest = CType(System.Net.WebRequest.Create(fileurl), HttpWebRequest)
            If bresume = True Then
                posresume = CInt(FileLen(filepath))
                tmppos = posresume
                hwebrequest.AddRange(CInt(tmppos))
            End If
     
            Dim hwebresponse As System.Net.HttpWebResponse = CType(hwebrequest.GetResponse, HttpWebResponse)
            readstr = hwebresponse.GetResponseStream
            lenfile = hwebresponse.ContentLength + tmppos
            timestart = Environment.TickCount 'temps de depart du téléchargement
            Dim tmplen As Long 'indique la position du flux
            tmplen = 2
            b = True
            RaiseEvent Debut_Dl(lenfile, CInt(posresume), CInt(timestart)) 'debut du téléchargement
            Do While tmplen > 0
                If b = False Then Exit Do 'en cas d'annulation, on quitte la boucle
                tmplen = readstr.Read(bytesarr, 0, 102400) 'lis les données
                tmppos += tmplen 'position du stream
                Dim filesave As New IO.FileStream(filepath, IO.FileMode.Append, IO.FileAccess.Write)
                filesave.Write(bytesarr, 0, CInt(tmplen)) 'ecrit les données dans le fichier au bon entroit
                filesave.Close() 'ferme le fichier
                RaiseEvent Progression_Dl(tmppos) 'déclanche l'event progression
                System.Threading.Thread.Sleep(300) 'ca sert à rien mais c'est pour ralentir le code je suppose !
            Loop
            RaiseEvent Fin_Dl(tmppos) 'le telechargement est terminé !
            readstr.Close() 'on ferme tout
            readstr = Nothing
        End Sub
    End Class
    pour les si tu as raison, c'est vrai que quand on l'écrit on si retrouve, mais à lire c'est peut-être moins clair en effet. merci.

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    à priori rien de dur, tu as un évènement qui te dit quand c'est fini
    donc tu fais pas une boucle for, tu lances le 1er téléchargement
    et dans l'évènement fini tu lances le suivant
    il te faut donc un compteur pour savoir où tu en es dans ta liste
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre averti Avatar de tbdarkspirit
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 53
    Par défaut
    humm.. pas bête!

    le problème c'est que je ne sais pas à l'avance combien il y a d'elément dans la liste... bon ça c'est pas bien grave il doit y avoir un moyen de le "détécter".

    d'autre part, tu entend quoi par un compteur? je vois ce que tu veux dire, mais je ne sais pas bien comment m'y prendre pour le mettre en place...

  7. #7
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Tiens donc je reconnais mon code et ma petite classe
    Citation Envoyé par sperot51 Voir le message
    à priori rien de dur, tu as un évènement qui te dit quand c'est fini
    donc tu fais pas une boucle for, tu lances le 1er téléchargement
    et dans l'évènement fini tu lances le suivant
    il te faut donc un compteur pour savoir où tu en es dans ta liste
    C'est Exact, il faut travailler dans l'event "finish", une fois ton telechargement terminé, tu lance le nouveau dans cette procédure. Pas besoin de compteur...
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 60
    Dernier message: 22/09/2011, 08h25
  2. Réponses: 2
    Dernier message: 17/01/2010, 15h29
  3. [ASP.NET 2.0] Upload d'une liste de fichiers
    Par dinbougre dans le forum ASP.NET
    Réponses: 4
    Dernier message: 12/08/2008, 07h52
  4. Réponses: 1
    Dernier message: 22/08/2006, 03h38
  5. Réponses: 1
    Dernier message: 30/06/2006, 15h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo