Munkyubi
Messages postés16Date d'inscriptionmardi 24 mai 2005StatutMembreDernière intervention23 mars 2010
-
23 janv. 2009 à 16:12
Munkyubi
Messages postés16Date d'inscriptionmardi 24 mai 2005StatutMembreDernière intervention23 mars 2010
-
23 janv. 2009 à 16:55
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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 janv. 2009 à 16:40
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)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 janv. 2009 à 16:24
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)
Munkyubi
Messages postés16Date d'inscriptionmardi 24 mai 2005StatutMembreDernière intervention23 mars 2010 23 janv. 2009 à 16:55
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 '^^)