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 :

Donwload de fichier via http://


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Par défaut Donwload de fichier via http://
    Bonjour,

    j'écris une application me permettant de mettre à jours des fichiers (exécutable etc.. ) de façon automatique, et transparent pour l'utilisateur.

    je passe par des Webservice pour detecté les fichiers qui doivent être mis à jours ( la n'est pas le problème) .. celui ci me retourne, en autre, le fichier x.exe à mettre à jours.

    Ensuite, je désire charger via l' url: http://site/repertoire/x.exe le fichier x.exe

    j'utilisé le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim client As WebClient = New WebClient
            Try
                Dim data As Stream = client.OpenRead(url)
                Dim reader As StreamReader = New StreamReader(data)
    La fonction StreamReader n'est pas approprié pour charger des fichiers binaires. ( il encode en UFT8 .. Le fichier n'a pas d'encodage particulier --> fichier de donné )

    Je n'arrive pas à voir sur internet la solution.
    Quelle fonction utilisé ?

    Merci pour votre aide
    Thierry

  2. #2
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    La fonction StreamReader n'est pas approprié pour charger des fichiers binaires
    Il y a les classes BinaryReader et BinaryWriter.

  3. #3
    Membre actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Par défaut
    Il y a les classes BinaryReader et BinaryWriter.
    Cela permet de lire et écrire n'importe quel flux de données?
    (J'ai un problème semblable, je veux télécharger un .rar de façon silencieuse...)

  4. #4
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim data As Stream = client.OpenRead(url)
    Dim reader As BinaryReader = New BinaryReader(data)
    Cela permet de lire et écrire n'importe quel flux de données?
    Oui
    Si tu à déjà un objet de type Stream tu peux utiliser le binaryReader et le binaryWriter.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Par défaut
    Grand Merci meziantou pour la piste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim data As Stream = client.OpenRead(url)
    Dim reader As BinaryReader = New BinaryReader(data)
    par contre , la méthode BinaryReader.ReadToEnd() n'existe pas.
    La méthode serais de lire par partie: reader.ReadBytes(1024) ' 1024 octets ici


    Voici ma fonction (fonctionnel, mais certainement que l'on peut la simplifier.)
    si ca peut aider Pacane ou d'autre personne.
    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
     
        ''' <summary>
        '''   chargement de fichier en mode binaire via une URL sous le protocol http
        ''' </summary>
        ''' <param name="url">Url spécifié en tand que string pour le chargement des données </param>
        ''' <param name="file">Chemain et fichier local de destination</param> 
        Function DownloadHttpModeBinary(ByVal url As String, ByVal file As String) As Boolean
            DownloadHttpModeBinary = False
     
     
            Dim client As WebClient = New WebClient
            Try
                ' Ouverture de la source pour Lecture de Flux de donnée
                Dim data As Stream = client.OpenRead(url)
                Dim reader As BinaryReader = New BinaryReader(data, New ASCIIEncoding())
     
                ' Ouverture du Fichier pour Ecriture de flux de donnée
                Dim oWriteBinStream As Stream = IO.File.Open(file, FileMode.Create)
                Dim oWriteBinOutput As BinaryWriter = New BinaryWriter(oWriteBinStream)
     
                Dim DownloadData() As Byte
                ' Lecture du flux de donnée
     
                Do
                    DownloadData = reader.ReadBytes(1024)           ' charge au maximum 1024 octets
                    ' si DownloadData.Length = 0 donc plus de donnée  (fin du flux)
                    If DownloadData.Length > 0 Then
                        oWriteBinOutput.Write(DownloadData)
                    End If
                Loop While DownloadData.Length > 0
     
                ' Fermeture du Fichier de sortie
                oWriteBinOutput.Close()
                oWriteBinStream.Close()
     
                ' Fermeture de la source 
                reader.Close()
                client.Dispose()
     
                DownloadHttpModeBinary = True
            Catch ex As Exception
                DownloadHttpModeBinary = False
            End Try
     
        End Function
    Pacane, as tu msn ? tu lit ton archive en rar pour ensuite la décompresser ?
    Tu utilise une dll pour la décompression ?

    Nous fessons le même dev

    Thierry

    Thierry

  6. #6
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Pour faire ce que tu fais, il n'y a pas besoin de BinaryReader ni Writer. Tu peux utiliser directement le stream obtenu avec File.Open

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 97
    Par défaut
    Il y a beaucoup plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim client As WebClient = New WebClient
    client.DownloadFile(url, file)

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Par défaut
    oh oui, ça marche :p j'ai honte :p

    L'écriture est plus simple lol


    Merci KooKiz

  9. #9
    Membre actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Par défaut
    En fait, j'ai un compte de megaupload et j'ai uploadé des .rar de mes backups, et je veux télécharger mes multiples .rar... J'ai utilisé :

    Code vbnet : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim client As WebClient = New WebClient
    client.DownloadFile(url, file)

    Et j'obtiens une page .html comme fichier... (pourtant quand je met le url dans mon navigateur on me propose de télécharger le fichier .rar directement (ou bien est-ce une redirection?))

  10. #10
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    MU fait bien une redirection selon le type de compte (free ou premium). Donc tu télécharges la page de redirection.

  11. #11
    Membre actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Par défaut
    Et j'imagine que l'URL de téléchargement doit être dans cette page de redirection téléchargée..? (désolé, je ne peux pas vérifier en ce moment, c'est pour ça que je demande, si jamais quelqu'un sait)

  12. #12
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223

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

Discussions similaires

  1. télécharger fichier via HTTP(S)
    Par xx_FiFty_xx dans le forum C#
    Réponses: 1
    Dernier message: 10/06/2008, 07h49
  2. telechargement fichier via HTTP et URL
    Par maverick56 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 15/01/2008, 11h56
  3. Upload des fichiers via http
    Par yanis97 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 05/04/2007, 14h01
  4. Recupere un fichier via HTTP
    Par kedare dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 31/10/2006, 19h13
  5. Vérification de l'existance d'un fichier via HTTP
    Par mouste79 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 02/02/2006, 14h26

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