[VB] WinInet Incorrect Filesize

Pagina: 1
Acties:

  • Norckon
  • Registratie: September 2000
  • Laatst online: 16-02 23:21
Hallo,

Ik heb in VB6 een programma geschreven welk een gecodeerd tekstbestand uitleest en de daarin genoemde bestanden van een FTP download.
Vanaf de meeste servers gaat dit prima. Echter nu is er een server waarbij de grootte van de bestanden niet correct is. Er wordt data bijbedacht. Ik heb met UltraCompare gekeken of er een aantoonbaar verschil is, maar er zit op schijnbaar willekeurige plekken extra witruimte in de data, waardoor rars niet uit te pakken zijn (unexpected end of archive).

De volgende code wordt gebruikt (ingekort):
Visual Basic:
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
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, _
 vbNullString, vbNullString, 0)
hConnection = InternetConnect(hOpen, FTP_Host, INTERNET_INVALID_PORT_NUMBER, _
 FTP_User, FTP_Pass, INTERNET_SERVICE_FTP, nFlag, 0)

F1 = FreeFile
Open szFileLocal For Binary As F1
            
    bDoLoop = True
    lTotalBytes = 0
    lNumberOfBytesRead = 0
    While bDoLoop
        sReadBuffer = vbNullString
        bDoLoop = InternetReadFile(hFile, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
        Put F1, , sReadBuffer
                                
        lTotalBytes = lTotalBytes + lNumberOfBytesRead
                
        perc = Int(((lTotalBytes / 1024) / (FileSize / 1024)) * 100)
        lbltxt = Int(lTotalBytes / 1024) & "/" & Int(FileSize / 1024) & " KB"
        If (lblFile.Caption <> lbltxt) Then lblFile.Caption = lbltxt
        UpdateImage picKB1, lblFileP, perc
                
        If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
        DoEvents
    Wend
            
Close F1


Waarbij onder andere:
Visual Basic:
1
Dim sReadBuffer As String * 2048

Dit laatste noem ik, omdat blijkt dat de filesize van een bestand na downloaden met mijn programma deelbaar blijkt door 2048 (wat wel logisch is), terwijl dat bij het goede bestand -gedownload met een gewone ftp client- niet het geval is. Ik dacht dit op te lossen door bijvoorbeeld te dimmen als String * 64 (size wel deelbaar door 64) maar dit mocht niet baten.

Het maakt niet uit of ik wel/niet passive mode heb aanstaan. Iemand enig idee hoe dit kan komen?

[ Voor 5% gewijzigd door Norckon op 03-11-2004 15:01 ]


  • Kuhlie
  • Registratie: December 2002
  • Niet online
Je moet de binary mode aanzetten, omdat er anders wel eens gerotzooid wordt met newlines.

  • Norckon
  • Registratie: September 2000
  • Laatst online: 16-02 23:21
Binary mode staat aan (nFlag is correct geset)..
Het is zo vreemd dat het slechts op 1 server voorkomt, welke wel goed werkt met een andere ftp client.

Iemand anders suggesties?