Ouvrir fichier en binaire SANS "Open file For Binary" [Résolu]

Signaler
Messages postés
16
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
23 mars 2010
-
Messages postés
16
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
23 mars 2010
-
Bonjour tout le monde,

Bon alors voilà mon problème est de savoir si en VB6 il existe une méthode pour ouvrir un fichier en Binaire sans utiliser le basique Open file For Binary.

Pourquoi cette demande ? En fait je suis en train de préparer un module d'upload de fichiers automatisé avec winsock. Les fichiers que j'ai à uploader sont des fichiers excel (.xls donc) et comme vous savez, il faut mettre le code du fichier en binaire dans la requête HTTP POST.

Le problème c'est que les fichiers excels étant assez "larges", la récupération du code binaire par un Open ... For Binary met en moyenne 40 secondes par fichier...(ce qui n'est pas viable puisque l'upload concerne entre 200 et 300 fichiers environ certains plus ou moins gros).

Toutes les solutions alternatives que je trouve sont en VB.Net... v_v

Merci d'avance si quelqu'un a une idée

5 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Re
Par précaution, je te conseille d'ajouter "Access Read" dans ta commande Open.
Tu ouvres un fichier en mode Binaire et tu lis du texte ?
Non, il faut lire des tableaux de Bytes (1 Byte = code ascii d'un Char)
A quoi correspond "str" ?
Pourquoi lire 15 octets à la fois si c'est pour les ajouter à une autre variable sans limite ?
Si tu dois tout lire, dimensionne "line" avec la taille du fichier (FileLenB) : Tu liras tout d'un coup (en mémoire !), tu gagneras du temps.

Tu peux essayer ça, si tu ne veux pas passer par les Bytes : (de mémoire)
   Dim Line As String
   str = ""
   f = FreeFile
   Open fPath For Binary Access Read As #f
   Line = String(FileLenB(fPath), 0)
   While Not EOF(f)
       Get #f, , line
       str = str & line
   Wend
   Close #f

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Salut
Le problème ne vient pas du Open mais de la manière avec laquelle tu lis les données.
Il faut adapter/optimiser la taille du buffer de lecture à la taille du buffer utilisé pour tes paquets de POST.
Comment pratiques-tu ?
Copie/Colle le code de lecture, il y a peut-être des lenteurs à corriger.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
"mettre le code du fichier en binaire" : Avec des 0 et des 1 ???
Qu'appelles-tu binaire ?
Messages postés
16
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
23 mars 2010

Hmm pour le moment le code pour ouvrir le fichier est :

    Dim f As Integer
    Dim str As String
    Dim line As String * 15
    str = ""
    f = FreeFile
   
    Open fPath For Binary As #f Len = Len(line)
    While Not EOF(f)
        Get #f, , line
        str = str & line
    Wend
    Close #f
Messages postés
16
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
23 mars 2010

Hmmm en effet le str ne sert à rien il suffit de tout récupérer en un Get '^^
(Enfin j'avais trouvé une façon alternative mais elle tenait plus du bricolage qu'autre chose lol).

En tout cas maintenant c'est instantané maintenant (str supprimé et boucle de même).

Merci beaucoup ! (pas vraiment l'habitude d'ouvrir des fichiers en binaire '^^)