Tein ftp ohjelman ja nyt se toimii muuten mutta serveri antaa _LIIKAA_ tietoa joka tiedostosta. Siinä mielessä omituinen että kun jaan tiedoston koon sen alkuperäisellä koolla niin saan 1,0123456789012345678901234567890123456789... sitten "normaalilla" ftp ohjelmalla saan oikean kokoisen tiedoston. Mitä ylimääräistä filuinfossa on?
Niinhän sen voit selvittää, että vertailet alkuperäistä ja muuttunutta tiedostoa heksaeditorilla. :)
Oliskohan siinä joku bufferointi (vaikkapa 512 tavua) ja kirjoitat sitten lopussa koko tuon bufferin etkä oikeaa datan määrää (<512). Vaikea sanoa tietämättä miten olet toteuttanut.
se ei nyt ole enää 1,01234... mutta vertailin niitä ja tossa toisessa näyttäisi olevan liikaa vbCrLf:ää. mutta mistä tämä voisi johtua? pitääkö serverin antamasta infosta irrottaa jotain pois?
muok: toteutin silleen että kun pyydetää tiedostoa niin avataan ko. tiedosto omalta koneelta binäärimuodossa ja aina kun tulee dataa servulta niin tungetaan se tiedostoon. Kun socketti sulkeutuu(=kaikki tieto siirretty) niin suletaan tiedostokin. Olen myös yrittänyt silleen että laitan ne yhteen globaalimuuttujaan joka sitten tungetaan kaikki yhdessä tiedostoon lopussa mutta sama ongelma.
Olisiko mahdollista nähdä hieman koodia toteutuksesta?
no tossa vähän, koko sorsa on sikaiso...
Private Sub ws2_Close()
Close
If fileState = "getlist" Then ListaaTiedostot
If fileState = "getfile" Then
vasemmalla.Visible = False
Close #1
BytesLeft = 0
UpDateLocalFiles dasPath
End If
fileState = ""
vasemmalla.Visible = False
ws2.Close
ilmoita "*** Tiedostoyhteys suljettu, datat siirretty"
End Sub
Private Sub ws2_DataArrival(ByVal bytesTotal As Long)
Dim tieto As String
If fileState = "" Then Exit Sub
ws2.GetData tieto, vbString
If fileState = "getlist" Then
TiedostoListaus = TiedostoListaus & tieto
ElseIf fileState = "getfile" Then
Put #1, , tieto
BytesLeft = BytesLeft - bytesTotal
vasemmalla.Caption = "Tavuja vielä siirrettävänä: " & BytesLeft
End If
End Subtoi filu on siis auki tossa kohtaa missä sinne laitetaan dataa, binäärimuodossa siis.
Aihe on jo aika vanha, joten et voi enää vastata siihen.