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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

+ 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