begin process at 2010 02 10 15:30:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > TÉLÉCHARGER UN FICHIER SUR INTERNET TRES SIMPLEMENT EN VB.NET

TÉLÉCHARGER UN FICHIER SUR INTERNET TRES SIMPLEMENT EN VB.NET


 Information sur la source

Note :
9,71 / 10 - par 7 personnes
9,71 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Source .NET ( DotNet ) Niveau :Débutant Date de création :12/02/2003 Date de mise à jour :12/02/2003 02:00:43 Vu :10 794

Auteur : hvb

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (26)
Ajouter un commentaire et/ou une note


 Description

Voila une manière simple de télécharger un fichier sur le web... je n'ai pas tester les limites de tailles, mais je pense qu'il faut eviter de tenter de pomper un fichier de 500Mo... sauf si vous etes sur à 100% de votre connection et du serveur distant...mais bon, bref.

Source

  • Private Function download_file(ByVal url As String, ByVal chemin As String) As String
  • Dim dl As New System.Net.WebClient() 'on crée un objet webclient
  • Dim n As Long = Environment.TickCount 'cette variable n'est pas obligatoire, elle servira à deduire le temps que le téléchargement à pris
  • Try
  • dl.DownloadFile(url, chemin) 'la commande de telechargement de l'objet dl
  • dl.Dispose() 'on libere dl
  • Return "téléchargement effectué en " & ((Environment.TickCount - n) / 1000) & " secondes" 'on renvoie une string indiquant le temps de téléchargement, sous entendant par la meme occasion l'execution avec succés du téléchargement
  • Catch ex As Exception
  • Return ex.Message.ToString 'si il y a une erreur, on en renvoie la description
  • End Try
  • End Function
  • 'Puis appelez la fonction dans une string, un texte ou un label.
  • Label1.Text = download_file("http://batto.free.fr/ConsoleFileCompare.exe", "D:\ConsoleFileCompare.exe")
   Private Function download_file(ByVal url As String, ByVal chemin As String) As String
        Dim dl As New System.Net.WebClient() 'on crée un objet webclient
        Dim n As Long = Environment.TickCount 'cette variable n'est pas obligatoire, elle servira à deduire le temps que le téléchargement à pris
        Try
            dl.DownloadFile(url, chemin) 'la commande de telechargement de l'objet dl
            dl.Dispose() 'on libere dl
            Return "téléchargement effectué en " & ((Environment.TickCount - n) / 1000) & " secondes" 'on renvoie une string indiquant le temps de téléchargement, sous entendant par la meme occasion l'execution avec succés du téléchargement
        Catch ex As Exception
            Return ex.Message.ToString 'si il y a une erreur, on en renvoie la description
        End Try
    End Function

    'Puis appelez la fonction dans une string, un texte ou un label.
 Label1.Text = download_file("http://batto.free.fr/ConsoleFileCompare.exe", "D:\ConsoleFileCompare.exe")

 Conclusion

Voila, comme d'hab, je pense et j'espere que ca servira.


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) FOND DE FEUILLE ANIMÉ : DÉGRADÉ MOUVANT POUR ABOUT OU SPLASH...
Source avec Zip Source avec une capture Source .NET (Dotnet) FONT VIEWER : VISIONNEUSE DE POLICES SYSTEMES.
Source avec Zip Source avec une capture Source .NET (Dotnet) HBSNAPSHOTERV3.0 : GESTIONNAIRE DE CAPTURES D'ÉCRAN
Source avec Zip Source avec une capture Source .NET (Dotnet) JEU : PICROSS OU "PUZZLE JAPONAIS"
Source avec Zip Source .NET (Dotnet) [.NET2] COMPRESSION/DÉCOMPRESSION GZIP DE FICHIER GRÂCE À IO...

 Sources de la même categorie

Source avec Zip Source avec une capture UPLOAD FTP VB 6 par Onin42
Source avec Zip Source avec une capture Source .NET (Dotnet) FAVORIS URL par Le Pivert
Source avec Zip Source avec une capture Source .NET (Dotnet) DEVSSH CLIENT SFTP/SSH par iblsysteme
Source avec Zip Source avec une capture CONNEXION RÉSEAU par ABUMAI
Source avec Zip CSOCKET - REMPLACEZ WINSOCK PAR LA VERSION 2 DES API par Renfield

Commentaires et avis

Commentaire de Nox le 12/02/2003 03:43:14

goood!
parfait pour mon problème de "gel" de mon exemple pour prendre une partie d'un code html
9/10

Commentaire de hvb le 12/02/2003 12:49:58

mais... c t pas du vb6 ton projet? (c celui dont tu as mis la src nan?)

Commentaire de Nox le 13/02/2003 04:04:43

ouais
me su encore fait avoir ak les sources vb.net jpensait stai tu vb simple :p

Commentaire de utopia le 13/02/2003 20:41:35

On peu je peut trouver Visual Basic.net ?

Merci a vous

Commentaire de Noiretulipe le 13/02/2003 21:30:47

chez le marchand lollll ... Ct nul, ok ..... ne referais plus ....

Commentaire de gedsismik le 08/09/2003 22:45:42

Ca donne quoi en VB6 ?

Commentaire de ludovicanceaux le 13/02/2005 15:50:24

en vb6 ce composant n'existe pô mai il y en a un similaire (Winsock)

Commentaire de hvb le 14/02/2005 12:21:19

"Ca donne quoi en VB6 ?"
un long code ecris par toi meme...

passer de vb6 à vb.net c'est tout simple, le contraire n'est pas toujours evident, voir parfois impossible.

Et winsock n'est pas du tout semblable au System.Net.WebClient

Commentaire de ludovicanceaux le 14/02/2005 15:50:00

bon le code n'est pô semblabe mai ca fai la même chose koi lolllllllllll

Commentaire de surfzoid le 25/09/2005 16:22:29

marche impacable
mais est il possible de definir une liste de fichier a partir d un rep http puis de telecharge la dite liste ?
10/10

Commentaire de hvb le 25/09/2005 16:51:40

bah oui, mais c'est à toi de le coder...
tu recupere la pages qui liste tes liens, tu formattes tes données, et tu fais une boucle... non? peut être que je comprend pas ce que tu veux.

Commentaire de surfzoid le 25/09/2005 20:13:20

Exacte et je viens de le finir, vraiment exelente ta function download
pour ceux que ca interesse voici le code que j ai rajouter pour liste qui me permet de maintenir mon soft a jour via http
        Dim reponse
        Dim telecharge
        Dim LinesFromFile, NextLine As String, FileNum As Integer

        Lblwaiting.Visible = True
        If Dir("cache\") <> "" Then Kill("cache\*.*")
        telecharge = download_file("http://" & serveurname & "/pointage-adi/updates/liste.txt", "cache\liste.txt")
        telecharge = download_file("http://" & serveurname & "/pointage-adi/updates/version.txt", "cache\version.txt")
        FileOpen(1, "cache\version.txt", OpenMode.Input)  ' Open file.
        FileOpen(2, "version.txt", OpenMode.Input)  ' Open file.
        reponse = MsgBox("La version " & LineInput(1) & " est dispo sur le seveur, vous utilisez la version " & LineInput(2) & " voulez vous faire une mise à jours ?", MsgBoxStyle.YesNo)
        If reponse = vbYes Then
            FileClose(1)
            FileOpen(1, "cache\liste.txt", OpenMode.Input)  ' Open file.
            logage.Visible = True
            Do Until EOF(1)
                NextLine = LineInput(1)
                System.Windows.Forms.Application.DoEvents()
                logage.Text = "Téléchargement en cours du fichier : " & NextLine
                'LinesFromFile = LinesFromFile & NextLine & Chr(13) & Chr(10)
                System.Windows.Forms.Application.DoEvents()
                telecharge = download_file("http://" & serveurname & "/pointage-adi/updates/" & NextLine, "cache\" & NextLine)
                'telecharge = LinesFromFile
                System.Windows.Forms.Application.DoEvents()
            Loop
        Else
            GoTo fintransfert
        End If

        reponse = MsgBox("Le téléchargement des fichiers est terminé,faire la mise à jours(Le logiciel vas être fermé)", MsgBoxStyle.YesNo)
        If reponse = vbYes Then
            Shell("cache\update.cmd", AppWinStyle.NormalFocus)
            End
        Else
            MsgBox("Pour proceder à une mise à jours ultérieure vous pouvez utiliser le fichier update.cmd qui se trouve dans le repertoire \cache\ de l application")
        End If

fintransfert:
        FileClose(1)
        FileClose(2)
        logage.Visible = False
        Lblwaiting.Visible = False
        SaveSetting(System.Reflection.Assembly.GetExecutingAssembly.GetName.Name, "options", "lastupdate", Today.DayOfYear)

Commentaire de surfzoid le 25/09/2005 20:15:29

pas terrible le formatage des message le code est carrement illisible dsl
sinon je n est pas testé mais ta fonction devrai marchée avec aussi du ftp genre
ftp://user:pass@adresse_ftp_du_file

Commentaire de betapoil le 11/02/2006 20:23:18

Bon code, trés sympa, j'ai repris celui de Surfzoid en ajoutant des controles d'erreurs importants :
Dim reponse
Dim telecharge
Dim LinesFromFile, NextLine As String, FileNum As Integer, Erreur as boolean = False

If Not (Directory.Exists("cache")) Then mkdir("cache")
If Not (File.Exists("version.txt")) Then Genere_Fichier_Version("version.txt")

Lblwaiting.Visible = True
try
   If Dir("cache\") <> "" Then Kill("cache\*.*")                 Catch e As Exception
   msgbox (e.ToString )
end try

If (download_file(serveurname & "/version.txt",  cache\version.txt")<>"") Then
    messagebox.Show ("Erreur de téléchargement du fichier version.txt")
    Erreur = True
    GoTo fintransfert
End If
        
FileOpen(1, "cache\version.txt", OpenMode.Input)  ' Open file.
FileOpen(2, "version.txt", OpenMode.Input)  ' Open file.
reponse = MsgBox("La version " & LineInput(1) & " est dispo sur le seveur, vous utilisez la version " & LineInput(2) & " voulez vous faire une mise à jours ?", MsgBoxStyle.YesNo)
        
If reponse = vbYes Then
    If (download_file(serveurname & "/liste.txt", "cache\liste.txt")<>"") Then
        messagebox.Show ("Erreur de téléchargement du fichier liste.txt")
Erreur = True
        GoTo fintransfert
    End If
    FileClose(1)
    FileOpen(1, "cache\liste.txt", OpenMode.Input)  ' Open file.
    logage.Visible = True
    Do Until EOF(1)
NextLine = LineInput(1)
        System.Windows.Forms.Application.DoEvents()
        logage.Text = "Téléchargement en cours du fichier : " & NextLine
        'LinesFromFile = LinesFromFile & NextLine & Chr(13) & Chr(10)
        System.Windows.Forms.Application.DoEvents()
        If (download_file(serveurname & NextLine, "cache\" & NextLine)<>"") Then
     messagebox.Show ("Erreur de téléchargement du fichier " & NextLine & "Mise à jour échouée.")
     Erreur = True
             GoTo fintransfert
        End If
        'telecharge = LinesFromFile
        System.Windows.Forms.Application.DoEvents()
     Loop
Else
     GoTo fintransfert
End If

reponse = MsgBox("Le téléchargement des fichiers est terminé, pour faire la mise à jour le logiciel vas être fermé, continuer ?", MsgBoxStyle.YesNo)
If reponse = vbYes Then
    If (File.Exists("cache\maj.cmd")) Then
        Shell("cache\maj.cmd", AppWinStyle.NormalFocus)
        End
    Else
        messagebox.Show ("Erreur : fichier maj.cmd introuvable !" & vbcrlf & vbcrlf & "Mise à jour échouée.")            
    End If
Else
    MsgBox("Pour proceder à une mise à jours ultérieure vous pouvez    utiliser le fichier update.cmd qui se trouve dans le repertoire \cache\ de l application")
End If

fintransfert:
    FileClose(1)
    FileClose(2)
    logage.Visible = False
    Lblwaiting.Visible = False
    Me.Close
    If not Erreur then                                   SaveSetting(System.Reflection.Assembly.GetExecutingAssembly.GetName.Name, "options", "lastupdate", Today.DayOfYear)

Commentaire de betapoil le 11/02/2006 20:24:54

Nota, j'ai fait de mon mieux pour la lisibilité ...
et pour faire du vrai VB.Net, il faut remplacer les "msgbox" par "messagebox.show" (j'en ai ouvblié qq uns)

Commentaire de aporler le 15/02/2006 17:32:28

Pour la personne qui demande ou trouver vb.net
Ce rendre à http://msdn.microsoft.com/vstudio/express/vb/download/
Version d'essais de 30 Jours.

Commentaire de GuilleW le 04/06/2006 00:30:26

Bonjour, pour VB.net vous pouvez même l'avoir gratuit en version étudiante disponible également sur le site microsoft, après je sais plus ou ...
Sinon un Grand merci < hvb > ta petite source était juste ce qu'il me fallait. Je vais pouvoir créer mon autoupdater plus simplement que prévue ^^
Merki!

Commentaire de sousoulebarbu le 23/06/2006 15:27:34

Bonjour,
J'ai essayé d'utiliser cette fonction avec
"http://pelerin.lesagencestv.com/php/recherche_resultat/recherche_resultat.php?f_type_recherche=simple&f_jour=28-6-2006&f_chaine=4&f_debut_emission=0"
mais je n'obtiens pas la même page que lorsque j'ouvre l'url dans mon navigateur. Quelqu'un saurait-il expliquer ce problème?
    

Commentaire de surfzoid le 23/06/2006 20:05:21

ce n'est pas une fonction de navigateur internet qui interprete et affiche du code (html,asp,php ...) mais qui recupere un fichier d'un serveur vers un ordi.
En clair l'affichage de la page web depand du navigateur essaye le meme lien que tu donne avec ie et firefox tu verra des differences

Commentaire de sousoulebarbu le 23/06/2006 21:56:07

Je sais, je suis pas un newbie non plus...
Quand j'ouvre le fichier téléchargé avec notepad, j'obtiens un code source totallement différent de celui de la page lorsque je l'ouvre avec ie ou ff.
Essaye toi même, tu verra!

Commentaire de surfzoid le 25/06/2006 16:16:03

ben en faite je tombe sur :
Résultats  


Aucune émission ne correspond à votre recherche...

Retour

Mais cependant fait attention au histoire de formatage de l'url, avec ou sans guillemet, quote ou encore les ~ ou %20% qui remplace des trucs comme les espaces ou autres caractéres
sinon je ne vois pas

Commentaire de sousoulebarbu le 25/06/2006 21:19:50

En utilisant cette fonction, tu arrive à retomber sur
"Aucune émission ne correspond à votre recherche..."?????
C'est bizard que j'y arrive pas.
Pour les personnes qui ont ce problème, j'utilise maintenant la fonction:
    Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
        "URLDownloadToFileA" (ByVal pCaller As Integer, ByVal szURL As String, _
        ByVal szFileName As String, ByVal dwReserved As Integer, _
        ByVal lpfnCB As Integer) As Integer

A utiliser comme ça: URLDownloadToFile(0,url, filename, 0, 0)
et tout fonctionne parfaitement

Commentaire de hvb le 25/06/2006 23:02:57

desolé d'entrer dans le debat si tard...
pour faire simple et court :
fais une requete GET et enregistre le resultat ou tu veux.
http://www.vbfrance.com/codes/REQUETE-HTTP-GET-POST_36181.aspx

Commentaire de soldier8514 le 22/06/2008 16:12:28

ce code doit surement geler le programme pendant que ça télécharge , ça craint !

Commentaire de hvb le 22/06/2008 18:31:29

lol... c'est à toi de le placer dans un thread pour ne pas "geler" ton main thread

regarde ça sinon :
http://www.vbfrance.com/codes/NET2-CLASSE-TELECHARGEMENT-HTTP-AVEC-GESTION-RESUME-PROGRESSION_41850.aspx

Commentaire de surfzoid le 22/06/2008 20:00:26

exacte backgroundworker_dowork, c'est ça principale utilité , de plus entre temps, j'avais découvert la classe network dans l'espace de nom "My.Computer" qui a déja une fonction de télécharchement.
@++ et bonne prog

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales