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 :

problème téléchargement fichier


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut problème téléchargement fichier
    bonjour,

    j'ai réaliser un petit gestionnaire de téléchargement, le seul souci c'est qu'il télécharge pas tout les fichiers.
    voici le code complet:
    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    Imports System.Net
    Public Class DL
     
        Dim whereToSave As String
     
        Delegate Sub ChangeTextsSafe(ByVal length As Long, ByVal position As Integer, ByVal percent As Integer, ByVal speed As Double)
        Delegate Sub DownloadCompleteSafe(ByVal cancelled As Boolean)
     
        Public Sub DownloadComplete(ByVal cancelled As Boolean)
            Me.txtFileName.Enabled = True
            Me.btnDownload.Enabled = True
            Me.btnCancel.Enabled = False
     
            If cancelled Then
     
                Me.Label4.Text = "Cancelled"
     
                MessageBox.Show("Download aborted", "Aborted", MessageBoxButtons.OK, MessageBoxIcon.Information)
     
     
            Else
                Me.Label4.Text = "Successfully downloaded"
     
                MessageBox.Show("Successfully downloaded!", "All OK", MessageBoxButtons.OK, MessageBoxIcon.Information)
     
     
            End If
     
            Me.ProgressBar1.Value = 0
            Me.Label5.Text = "Downloading: "
            Me.Label6.Text = "Save to: "
            Me.Label3.Text = "File size: "
            Me.Label2.Text = "Download speed: "
            Me.Label4.Text = ""
     
        End Sub
     
        Public Sub ChangeTexts(ByVal length As Long, ByVal position As Integer, ByVal percent As Integer, ByVal speed As Double)
     
            Me.Label3.Text = "File Size: " & Math.Round((length / 1024), 2) & " KB"
     
            Me.Label5.Text = "Downloading: " & Me.txtFileName.Text
     
            Me.Label4.Text = "Downloaded " & Math.Round((position / 1024), 2) & " KB of " & Math.Round((length / 1024), 2) & "KB (" & Me.ProgressBar1.Value & "%)"
     
            If speed = -1 Then
                Me.Label2.Text = "Speed: calculating..."
            Else
                Me.Label2.Text = "Speed: " & Math.Round((speed / 1024), 2) & " KB/s"
            End If
     
            Me.ProgressBar1.Value = percent
     
     
        End Sub
     
        Private Sub btnDownload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDownload.Click
     
            If Me.txtFileName.Text <> "" AndAlso Me.txtFileName.Text.StartsWith("http://") Then
     
     
                Me.SaveFileDialog1.FileName = Me.txtFileName.Text.Split("/"c)(Me.txtFileName.Text.Split("/"c).Length - 1)
     
                If Me.SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
     
                    Me.whereToSave = Me.SaveFileDialog1.FileName
     
                    Me.SaveFileDialog1.FileName = ""
     
                    Me.Label6.Text = "Save to: " & Me.whereToSave
     
                    Me.txtFileName.Enabled = False
                    Me.btnDownload.Enabled = False
                    Me.btnCancel.Enabled = True
     
                    Me.BackgroundWorker1.RunWorkerAsync()
     
                End If
     
            Else
     
                MessageBox.Show("Please insert valid URL for download", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)
     
            End If
     
        End Sub
     
        Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
     
            Dim theResponse As HttpWebResponse
            Dim theRequest As HttpWebRequest
            Try
     
                theRequest = WebRequest.Create(Me.txtFileName.Text)
                theResponse = theRequest.GetResponse
            Catch ex As Exception
     
                MessageBox.Show("An error occurred while downloading file. Possibe causes:" & ControlChars.CrLf & _
                                "1) File doesn't exist" & ControlChars.CrLf & _
                                "2) Remote server error", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
     
                Dim cancelDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)
     
                Me.Invoke(cancelDelegate, True)
     
                Exit Sub
            End Try
            Dim length As Long = theResponse.ContentLength
     
            Dim safedelegate As New ChangeTextsSafe(AddressOf ChangeTexts)
            Me.Invoke(safedelegate, length, 0, 0, 0)
     
            Dim writeStream As New IO.FileStream(Me.whereToSave, IO.FileMode.Create)
     
            Dim nRead As Integer
            Dim speedtimer As New Stopwatch
            Dim currentspeed As Double = -1
            Dim readings As Integer = 0
     
            Do
     
                If BackgroundWorker1.CancellationPending Then
                    Exit Do
                End If
     
                speedtimer.Start()
     
                Dim readBytes(4095) As Byte
                Dim bytesread As Integer = theResponse.GetResponseStream.Read(readBytes, 0, 4096)
     
                nRead += bytesread
                Dim percent As Short = (nRead * 100) / length
     
                Me.Invoke(safedelegate, length, nRead, percent, currentspeed)
     
                If bytesread = 0 Then Exit Do
     
                writeStream.Write(readBytes, 0, bytesread)
     
                speedtimer.Stop()
     
                readings += 1
                If readings >= 5 Then
                    currentspeed = 20480 / (speedtimer.ElapsedMilliseconds / 1000)
                    speedtimer.Reset()
                    readings = 0
                End If
            Loop
     
            theResponse.GetResponseStream.Close()
            writeStream.Close()
     
            If Me.BackgroundWorker1.CancellationPending Then
     
                IO.File.Delete(Me.whereToSave)
     
                Dim cancelDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)
     
                Me.Invoke(cancelDelegate, True)
     
                Exit Sub
     
            End If
     
            Dim completeDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)
     
            Me.Invoke(completeDelegate, False)
     
        End Sub
     
        Private Sub mainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.Label4.Text = ""
        End Sub
     
        Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
            Me.BackgroundWorker1.CancelAsync()
        End Sub
     
        Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs)
     
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.Close()
     
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            FormInfo.Show()
     
        End Sub
    End Class
    quelque fois il me dit sa:
    An error occurred while downloading file. Possibe causes
    File doesn't exist
    Remote server error", "Error"
    ou aussi:
    Please insert valid URL for download, Warning
    pourtant se que je veut dl est un fichier qui vient de clubic ou autres
    donc se sont des fichier valides
    que se soit une adresse http ou ftp il me dit la même chose
    savez vous pourquoi ?
    merci d'avance,
    Dernière modification par Deepin ; 07/03/2011 à 11h56. Motif: Balises [QUOTE]...[/QUOTE]

  2. #2
    Membre expérimenté Avatar de anonymousse
    Profil pro
    Inscrit en
    Février 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 130
    Par défaut
    bonjour,

    est-ce que tu l'as entièrement codé ?
    tes questions me donnent l'impression que tu ne sais pas exactement ce que fait ce code.

    les messages d'erreur que tu donnes sont directement ceux des MsgBox ce code, il faut que tu vérifies tous les cas pour lesquels ils apparaissent.

    exemple :

    "Please insert valid URL for download", "Warning"
    apparait si la condition suivant n'est pas remplie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.txtFileName.Text <> "" AndAlso Me.txtFileName.Text.StartsWith("http://")
    Est-ce le cas ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    il y a vraiment l'adresse complète
    par ex: je rentre cette adresse: http://download.fedoraproject.org/pu...x86_64-DVD.iso

    il me marque quand même l'erreur
    et quand je rentre cette adresse par ex:http://media2.koreus.com/00071/20110...t-montagne.mp4

    sa fonctionne

  4. #4
    Membre expérimenté Avatar de anonymousse
    Profil pro
    Inscrit en
    Février 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 130
    Par défaut
    le code fonctionne chez moi, comment entres-tu l'adresse dans la TextBox ?

    Il se peut qu'il y ait des caractères supplémentaires voir des espaces ...

    tu peux effectuer un nettoyage des espaces en tout cas en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.txtFileName.Text.trim().StartsWith("http://")
    mais je pense qu'il vaut mieux être sûr de l'entrée et de la méthode utilisée pour la faire, ça évitera d'autres erreurs par la suite !

    autre piste possible concerne le format des entrées dans la TextBox.

  5. #5
    Invité
    Invité(e)
    Par défaut
    je fait copier coller pour placer l'adresse dans la textbox

    le code fonctionne chez toi ? mais a tu éssayer de télécharger, sa marche ?

  6. #6
    Membre expérimenté Avatar de anonymousse
    Profil pro
    Inscrit en
    Février 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 130
    Par défaut
    je ne peux pas tester l'ensemble du code, je n'ai pas le design de ta form, il y a trop de contrôles.

    j'ai seulement testé le fonctionnement de l'entrée dans la TextBox.

    Une piste à creuser peut-être c'est l'autorisation de téléchargement ...

    En tout cas utilises le debuger en pas à pas pour analyser les variables au fur et à mesure de leur chargement.

Discussions similaires

  1. Probléme téléchargement fichier audio
    Par jerem3000 dans le forum Windows Phone
    Réponses: 11
    Dernier message: 01/03/2011, 15h19
  2. Réponses: 1
    Dernier message: 26/07/2010, 11h57
  3. forcer le téléchargement - problème ouverture fichier
    Par grinder59 dans le forum Langage
    Réponses: 8
    Dernier message: 09/03/2006, 15h59
  4. Problème forcer téléchargement fichier
    Par cams dans le forum Langage
    Réponses: 34
    Dernier message: 15/12/2005, 16h42

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