|
| Problem med HTTP upload i VB6 Fra : Morten Trab |
Dato : 28-12-03 22:52 |
|
Hej,
Jeg sidder her og roder med at få lavet et program der skal uploade en fil
(nærmere bestemt et DIB-billede) samt en tekst-streng via HTTP, og som så
modtages af PHP...
Har snart surfet nettet tyndt den seneste måned, men kan simpelthen ikke få
det til at virke...
Har fået lavet forbindelsen til serveren, men med et lille test-script der
viser hvad der sendes til serveren kan man se at der slet ikke kommer noget
data til serveren...
#### Code ####
intFree = FreeFile()
Open strFile For Binary Access Read Lock Read Write As intFree
strData = Space(LOF(intFree))
Get #intFree, , strData
Close intFree
strBoundary = "---------------------------" & LCase(RndBoundary) '
RndBoundary er en funktion der returnerer den streng der skal bruges til at
"identificere" med...
strCommand = vbCrLf & strBoundary & vbCrLf & "Content-Disposition:
form-data; name=" & Chr(34) & "ufil" & Chr(34) & "; filename=" & Chr(34) &
strFile & Chr(34) & vbCrLf & _
"Content-Type:
application/octet-stream" & vbCrLf & vbCrLf & strData & vbCrLf & strBoundary
& vbCrLf
strCommand = strCommand & "Content-Disposition: form-data; name=" &
Chr(34) & "uname" & Chr(34) & vbCrLf & _
vbCrLf & uname & vbCrLf & strBoundary &
"--" & vbCrLf & vbCrLf
strHeaders = "POST /" & strServerPage & " HTTP/1.1" & vbCrLf & _
"Content-Type: multipart/form-data; boundary=" & strBoundary
& vbCrLf & _
"Host: " & strServerIp & vbCrLf & _
"Accept: */*" & vbCrLf & _
"Content-Length: " & CStr(Len(strCommand)) & vbCrLf & _
"Connection: close" & vbCrLf & vbCrLf
Sendbytes = 0
arrByte = StrConv((strHeaders & strCommand), vbFromUnicode)
With frmMain.Inet1
If .State = 7 Then
.Close
End If
.LocalPort = 0
.RemotePort = strServerPort
.RemoteHost = strServerIp
.Connect
While .State <> 7
DoEvents
Wend
.SendData arrByte
End With
Nogen der kan se hvad der er galt??
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (28-12-2003)
| Kommentar Fra : Tomas Christiansen |
Dato : 28-12-03 23:28 |
|
Morten Trab skrev:
> Har fået lavet forbindelsen til serveren, men med et lille test-script der
> viser hvad der sendes til serveren kan man se at der slet ikke kommer
noget
> data til serveren...
Nå, og hvordan ser du så det?
> strData = Space(LOF(intFree))
> Get #intFree, , strData
....
> strCommand = ...
> application/octet-stream" & vbCrLf & vbCrLf & strData & vbCrLf &
strBoundary
....
> arrByte = StrConv((strHeaders & strCommand), vbFromUnicode)
Går det godt at læse binære data ind i en del af en streng-variabel, og så
bagefter fortælle at indholdet af streng-variablen slet ikke er en blanding
af binære data og "rigtige" VB-strenge, men derimod en Unicode-streng, som
skal konverteres til din maskines "default locale" - som formentlig ikke er
det samme som web-serveren forstår som standard?
-------
Tomas
| |
Morten Trab (28-12-2003)
| Kommentar Fra : Morten Trab |
Dato : 28-12-03 23:47 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bsnla8$14mg$1@news.cybercity.dk...
> Nå, og hvordan ser du så det?
Ved at lade PHP-scriptet skrive til skræmen hvad der er blevet sendt, og
lade programmet hente hvad PHP-scriptet skriver, og debug.print'e det...
> Går det godt at læse binære data ind i en del af en streng-variabel
Umiddelbart, ja...En normal HTML-side ville jo gøre det samme, når man laver
HTTP-upload...
> og så
> bagefter fortælle at indholdet af streng-variablen slet ikke er en
blanding
> af binære data og "rigtige" VB-strenge, men derimod en Unicode-streng, som
> skal konverteres til din maskines "default locale" - som formentlig ikke
er
> det samme som web-serveren forstår som standard?
Har forsøgt, som unicode, og "u-konverteret"...Samme "problem" i begge
omgange...
Men det lyder somom du ved hvordan det skal gøres "rigtigt", så må jeg
høre??
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (29-12-2003)
| Kommentar Fra : Tomas Christiansen |
Dato : 29-12-03 00:25 |
|
Morten Trab skrev:
> > Nå, og hvordan ser du så det?
>
> Ved at lade PHP-scriptet skrive til skræmen hvad der er blevet sendt, og
> lade programmet hente hvad PHP-scriptet skriver, og debug.print'e det...
Jamen, får du slet intet igennem til serveren eller hur?
Hvis ikke, er der så ikke noget galt med din HTML-strøm?
Har du prøvet at sende kun 1 byte data?
> > Går det godt at læse binære data ind i en del af en streng-variabel
>
> Umiddelbart, ja...En normal HTML-side ville jo gøre det samme, når man
laver
> HTTP-upload...
Såååe? Hvordan beholder man så sine binære data, hvis browseren kan finde på
at konvertere dem somom det var tekst?
> Har forsøgt, som unicode, og "u-konverteret"...Samme "problem" i begge
> omgange...
Hvorfor sender du ikke dine binære data som et bytearray i en send for sig
selv? Burde det ikke virke?
> Men det lyder somom du ved hvordan det skal gøres "rigtigt", så må jeg
> høre??
Overhovedet ikke. Har aldrig prøvet kombinationen PHP/HTML/Upload/VB f'ør.
-------
Tomas
| |
Morten Trab (29-12-2003)
| Kommentar Fra : Morten Trab |
Dato : 29-12-03 09:48 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bsnol4$1a4f$1@news.cybercity.dk...
> Jamen, får du slet intet igennem til serveren eller hur?
Intet...Har bedt den skrive alle $POST variabler ti lskærmen, og har også
forsøgt at spørge DIREKTE på den tekst streng der skal sendes med...Intet af
det kommer igennem...
> Hvis ikke, er der så ikke noget galt med din HTML-strøm?
Muligvis...Eller rettere, det må der jo være, ellers ville PHP'en vel finde
noget...
> > Umiddelbart, ja...En normal HTML-side ville jo gøre det samme, når man
> laver
> > HTTP-upload...
>
> Såååe? Hvordan beholder man så sine binære data, hvis browseren kan finde
på
> at konvertere dem somom det var tekst?
Det ved jeg så ikke, men jeg kan da ikke se forskellen i om IE sender binært
og ASCII i samme omgang, og om jeg gør det med VB...
> > Har forsøgt, som unicode, og "u-konverteret"...Samme "problem" i begge
> > omgange...
>
> Hvorfor sender du ikke dine binære data som et bytearray i en send for sig
> selv? Burde det ikke virke?
Scriptet som modtager skal bruge både tekst-strengen og filen der uploades i
samme omgang, da filen på serveren skal omdøbes til det der står i
tekst-strengen...
> Overhovedet ikke. Har aldrig prøvet kombinationen PHP/HTML/Upload/VB f'ør.
Okay, det lød bare som om du lige kendte svaret... :)
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (29-12-2003)
| Kommentar Fra : Tomas Christiansen |
Dato : 29-12-03 11:05 |
|
Morten Trab skrev:
> Det ved jeg så ikke, men jeg kan da ikke se forskellen i om IE sender
binært
> og ASCII i samme omgang, og om jeg gør det med VB...
Jo, for jeg er ret sikkert på at IE _ikke_ prøver at konvertere de binære
data fra Unicode til ét eller andet Windows-tegnsæt.
Jeg tror at du skal prøve at sætte dig ned og skrive nogle binære data ned
på et stykke papir, f.eks. værdierne (decimalt): 65, 0, 66, 0, 67, 0.
Vi er enige om at der er 6 bytes, ikkesandt?
Hvordan tror du at de 6 bytes ser ud, hvis du fortæller VB at det er Unicode
og det skal konverteres til dit Windows-tegnsæt?
> Scriptet som modtager skal bruge både tekst-strengen og filen der uploades
i
> samme omgang, da filen på serveren skal omdøbes til det der står i
> tekst-strengen...
I samme "omgang" - hvad mener du med det?
Ved du ikke at en TCP-forbindelse er en strøm af bytes?
Ja, selvfølgelig opdeles denne strøm i et antal pakker (afhængig af de
underliggende nets MTU'er), men det er slut-applikationerne ganske
uvedkommende.
Om du sender din strøm af bytes i 100 pakker eller i 1 pakke har ingen
betydning!
En anden ting, undrede mig lidt. Skal man ikke sende en oplysning om hvor
mange bytes binære data man sender?
Hvordan skal web-serveren ellers vide hvornår de binære data er slut???
-------
Tomas
| |
Morten Trab (29-12-2003)
| Kommentar Fra : Morten Trab |
Dato : 29-12-03 11:26 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bsou43$3pn$1@news.cybercity.dk...
> Morten Trab skrev:
> > Det ved jeg så ikke, men jeg kan da ikke se forskellen i om IE sender
> binært
> > og ASCII i samme omgang, og om jeg gør det med VB...
>
> Jo, for jeg er ret sikkert på at IE _ikke_ prøver at konvertere de binære
> data fra Unicode til ét eller andet Windows-tegnsæt.
Har somsagt også forsøgt UDEN at konvertere noget som helst...
> > Scriptet som modtager skal bruge både tekst-strengen og filen der
uploades
> i
> > samme omgang, da filen på serveren skal omdøbes til det der står i
> > tekst-strengen...
>
> I samme "omgang" - hvad mener du med det?
At tekst strengen skal bruges sammen med den uploadede fil...
> Ved du ikke at en TCP-forbindelse er en strøm af bytes?
Jo da...
> Ja, selvfølgelig opdeles denne strøm i et antal pakker (afhængig af de
> underliggende nets MTU'er), men det er slut-applikationerne ganske
> uvedkommende.
>
> Om du sender din strøm af bytes i 100 pakker eller i 1 pakke har ingen
> betydning!
Enig, og det er jo heller ikke noget man selv bestemmer...
Det jeg mente er at det skal sendes i samme POST til serveren, ikke i 2
ufahængige POST's...
> En anden ting, undrede mig lidt. Skal man ikke sende en oplysning om hvor
> mange bytes binære data man sender?
> Hvordan skal web-serveren ellers vide hvornår de binære data er slut???
Der er en header med der hedder Content-Length som angiver hvor meget data
der sendes til serveren...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (30-12-2003)
| Kommentar Fra : Tomas Christiansen |
Dato : 30-12-03 00:39 |
|
Morten Trab skrev:
> Har somsagt også forsøgt UDEN at konvertere noget som helst...
Ja? Det tyder på at du bare prøver sådan lidt konvertering på må og få.
Du er nødt til at sætte dig ned og se på præcis _hvad_ som skal konverteres
og hvad som _ikke_ skal samt ikke mindst hvad der skal konverteres _til_ og
_fra_, Hvis du misser bare ét punkt her, er jeg ret sikker på at din
web-server rækker tunge ad dig!
Husk at hvis du foretager en konvertering, kan det ændre længden af dine
data, hvorfor det efterfølgende kan blive nødvendigt at justere på
Content-Length værdien.
> > Om du sender din strøm af bytes i 100 pakker eller i 1 pakke har ingen
> > betydning!
>
> Enig, og det er jo heller ikke noget man selv bestemmer...
> Det jeg mente er at det skal sendes i samme POST til serveren, ikke i 2
> ufahængige POST's...
Jeg har slet ikke bekymret mig om POST's. HTTP/HTML interesserer mig basalt
set ikke.
Du skriver i en VB-gruppe, og det er din VB-kode jeg tager stilling til.
Ikke sådan at jeg ikke vil kigge på dit HTML, men det er ikke noget jeg har
rodet meget med.
> > En anden ting, undrede mig lidt. Skal man ikke sende en oplysning om
hvor
> > mange bytes binære data man sender?
> > Hvordan skal web-serveren ellers vide hvornår de binære data er slut???
>
> Der er en header med der hedder Content-Length som angiver hvor meget data
> der sendes til serveren...
Ja, du har ret. Så vidt jeg kan se af HTTP 1.1 specifikationerne på W3C's
webside, er det måden at angive hvor mange data man sender, men det giver da
godt nok serveren en stort stykke arbejde med at arbejde sig "baglæns"
gennem strømmen af bytes, for at finde ud af hvor de binære data rent
faktisk slutter!
Hvis denne værdi ikke er korrekt, burde du få en fejlkode 400 af serveren
(står der i specifikationerne).
-------
Tomas
| |
Morten Trab (30-12-2003)
| Kommentar Fra : Morten Trab |
Dato : 30-12-03 13:23 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bsqdr8$2l1k$1@news.cybercity.dk...
> Ja, du har ret. Så vidt jeg kan se af HTTP 1.1 specifikationerne på W3C's
> webside, er det måden at angive hvor mange data man sender, men det giver
da
> godt nok serveren en stort stykke arbejde med at arbejde sig "baglæns"
> gennem strømmen af bytes, for at finde ud af hvor de binære data rent
> faktisk slutter!
>
> Hvis denne værdi ikke er korrekt, burde du få en fejlkode 400 af serveren
> (står der i specifikationerne).
Gør jeg ikke...Scriptet afvikles fint nok, men der kommer bare ikke noget
data til scriptet...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (30-12-2003)
| Kommentar Fra : Tomas Christiansen |
Dato : 30-12-03 21:58 |
|
Morten Trab skrev:
> Gør jeg ikke...Scriptet afvikles fint nok, men der kommer bare ikke noget
> data til scriptet...
Når du skriver "scriptet" refererer du til dit PHP-script?
Jeg tror at du er nødt til at starte forfra!
Start med det mest simple. Får du hul igennem?
Hvis nej, så find ud af hvad der gik galt, ret det og prøv igen.
Hvis ja, så fyld lidt mere på - gør det lidt mere avanveret og prøv igen.
Dvs. at du må prøve uden binære data i første omgang.
Prøv også at se om du kan "sniffe" præcis hvad der bliver sendt af dit
program. Lav evt. et server-program, som står og lytter på en port, og
agerer web-server. Lad nu dit program klient-program forbinde sig til til
server-programmet, som skal tage alle pakker som det modtager, og behandle
disse om bytearrays, og skrive dem ned i en fil. Nu har du et præcist
billede af hvad din web-server rent faktisk modtager.
Så vil du også kunne se hvorfor du går så gruelig galt i dit forsøg på at
konvertere en blanding af tekst og binære data som om det hele er Unicode
til Windows tegnsæt.
-------
Tomas
| |
Rayman (02-01-2004)
| Kommentar Fra : Rayman |
Dato : 02-01-04 22:27 |
|
Jeg har rodet lidt med noget af det samme.
Hvis du angiver typen til binary, skal du ikke konvertere noget som helst,
men alle dele af headeren skal selvfølgelig være i orden. Mit modtager
script var et ASP script, og fra ASP, kan man ikke modtage de binære data
via ASP's form objekter, men det er muligt at tilgå dem via et
"readbinarypost" kald. Det kan være at det er samme problem i PHP, men der
har jeg ikke prøvet det.
Jeg fik det til at virke ved at hente et program som agerede proxy på min
lokale maskine, og så prøvede jeg at uploade en fil via nogle standard HTML
controls. Herefter kunne jeg gå ind i snyde-proxy progammet og se hvad data
der blev sendt. Hvis du sender disse data til dit script, burde det jo
virke, ellers er det scriptet som har et problem. (tror det hedder noget med
http capture)
Mvh, Kenneth, HexaD
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bssop8$2ps3$1@news.cybercity.dk...
> Morten Trab skrev:
> > Gør jeg ikke...Scriptet afvikles fint nok, men der kommer bare ikke
noget
> > data til scriptet...
>
> Når du skriver "scriptet" refererer du til dit PHP-script?
>
> Jeg tror at du er nødt til at starte forfra!
>
> Start med det mest simple. Får du hul igennem?
> Hvis nej, så find ud af hvad der gik galt, ret det og prøv igen.
> Hvis ja, så fyld lidt mere på - gør det lidt mere avanveret og prøv igen.
>
> Dvs. at du må prøve uden binære data i første omgang.
>
> Prøv også at se om du kan "sniffe" præcis hvad der bliver sendt af dit
> program. Lav evt. et server-program, som står og lytter på en port, og
> agerer web-server. Lad nu dit program klient-program forbinde sig til til
> server-programmet, som skal tage alle pakker som det modtager, og behandle
> disse om bytearrays, og skrive dem ned i en fil. Nu har du et præcist
> billede af hvad din web-server rent faktisk modtager.
>
> Så vil du også kunne se hvorfor du går så gruelig galt i dit forsøg på at
> konvertere en blanding af tekst og binære data som om det hele er Unicode
> til Windows tegnsæt.
>
> -------
> Tomas
>
| |
Morten Trab (03-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 03-01-04 09:39 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bssop8$2ps3$1@news.cybercity.dk...
> Morten Trab skrev:
> > Gør jeg ikke...Scriptet afvikles fint nok, men der kommer bare ikke
noget
> > data til scriptet...
>
> Når du skriver "scriptet" refererer du til dit PHP-script?
Jep...
> Jeg tror at du er nødt til at starte forfra!
>
> Start med det mest simple. Får du hul igennem?
Er det jeg har gjort...
> Dvs. at du må prøve uden binære data i første omgang.
Ja, virker fint...
> Prøv også at se om du kan "sniffe" præcis hvad der bliver sendt af dit
> program. Lav evt. et server-program, som står og lytter på en port, og
> agerer web-server. Lad nu dit program klient-program forbinde sig til til
> server-programmet, som skal tage alle pakker som det modtager, og behandle
> disse om bytearrays, og skrive dem ned i en fil. Nu har du et præcist
> billede af hvad din web-server rent faktisk modtager.
Har nu prøvet dette, og kan se at et billede der fylder 230454 bytes på
disken kun bliver afsendt som ca. 4500 bytes...Somom hele billedet ikke
kommer med... :(
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Morten Trab (03-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 03-01-04 09:59 |
|
"Morten Trab" <mortenREMOVE@trab.dk> skrev i en meddelelse
news:bt5v0k$8j8$1@svr-1.homedir.dk...
> Har nu prøvet dette, og kan se at et billede der fylder 230454 bytes på
> disken kun bliver afsendt som ca. 4500 bytes...Somom hele billedet ikke
> kommer med... :(
Har nu fundet ud af at den fint indlæser hele billedet, men den sender ikke
det hele med...Somom der er et eller andet der får programmet til at tro at
den har sendt det hele efter bare 4000 bytes...
Jeg kan bare ikke finde på noget som man kan bruge til at konvertere
strengen til noget jeg kan bruge...
Har prøvet at deklarere strData som byte istedet for string, og det virker
slet ikke...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (03-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 03-01-04 22:55 |
|
Morten Trab skrev:
> Har nu fundet ud af at den fint indlæser hele billedet, men den sender
ikke
> det hele med...Somom der er et eller andet der får programmet til at tro
at
> den har sendt det hele efter bare 4000 bytes...
>
> Jeg kan bare ikke finde på noget som man kan bruge til at konvertere
> strengen til noget jeg kan bruge...
>
> Har prøvet at deklarere strData som byte istedet for string, og det virker
> slet ikke...
Okay, men hvordan sender du så strData, når den er "byte" som du skriver?
Lad mig lige se din VB-kode.
-------
Tomas
| |
Morten Trab (03-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 03-01-04 22:59 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bt7dke$n21$1@news.cybercity.dk...
> Okay, men hvordan sender du så strData, når den er "byte" som du skriver?
Som jeg hele tiden har sendt strData, da den var string...
> Lad mig lige se din VB-kode.
Den er som den ser ud i hovedindlægget, men du kan da godt få den igen:
Public Sub Inet_Upload(ByVal strFile As String, ByVal uname As String)
Dim intFree As Integer
Dim strUrl As String, _
strServerIp As String, _
strServerPort As String, _
strServerPage As String, _
strData As String, _
strHeaders As String, _
strBoundary As String, _
strCommand As String, _
strSend As String
strServerIp = "localhost"
strServerPort = "80"
strServerPage = "upload.php"
intFree = FreeFile()
Open strFile For Binary Access Read Lock Read Write As intFree
strData = Space(LOF(intFree))
Get #intFree, , strData
Close intFree
strBoundary = "---------------------------" & LCase(RndBoundary)
strCommand = strBoundary & vbCrLf & "Content-Disposition: form-data;
name=""ufil""; filename=""" & strFile & """" & vbCrLf & _
"Content-Type:
application/octet-stream" & vbCrLf & vbCrLf & strData & vbCrLf & strBoundary
& "--" & vbCrLf & vbCrLf
strHeaders = "POST /" & strServerPage & "?uname=" & frmMain.UserName & "
HTTP/1.1" & vbCrLf & _
"Content-Type: multipart/form-data; boundary=" & strBoundary
& vbCrLf & _
"Host: " & strServerIp & vbCrLf & _
"Accept: */*" & vbCrLf & _
"Content-Length: " & CStr(Len(strCommand)) & vbCrLf & _
"Connection: close" & vbCrLf & vbCrLf
Sendbytes = 0
' arrByte = StrConv((strHeaders & strCommand), vbFromUnicode)
strSend = strHeaders & strCommand
With frmMain.Inet1
If .State <> 0 Then
.Close
End If
.LocalPort = 0
.RemotePort = strServerPort
.RemoteHost = strServerIp
.Connect
While .State <> 7
DoEvents
Wend
.SendData strSend
End With
End Sub
| |
Tomas Christiansen (03-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 03-01-04 23:11 |
|
Morten Trab skrev:
> > Okay, men hvordan sender du så strData, når den er "byte" som du
skriver?
>
> Som jeg hele tiden har sendt strData, da den var string...
Det kan ikke lade sig gøre!
> > Lad mig lige se din VB-kode.
>
> Den er som den ser ud i hovedindlægget, men du kan da godt få den igen:
Nej, der MÅ være forskel!
1. Den linie hvor du erklærer strData må da se anderledes ud.
2. Der hvor du "sammenføjer" strData (som nu er "byte") med de øvrige data.
> Public Sub Inet_Upload(ByVal strFile As String, ByVal uname As String)
<snip en masse kode>
Du har ikke vist at strData er "byte" i denne kodestump (du mener ved "tabel
af bytes")?
-------
Tomas
| |
Morten Trab (03-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 03-01-04 23:41 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bt7ei5$ohv$1@news.cybercity.dk...
> Nej, der MÅ være forskel!
Som jeg skrev...Nej...Kun at
strData As String
er
strData As Byte
istedet...Det er den eneste forskel...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (04-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 04-01-04 00:32 |
|
Morten Trab skrev:
> Som jeg skrev...Nej...Kun at
>
> strData As String
>
> er
>
> strData As Byte
>
> istedet...Det er den eneste forskel...
Hmm. Du får da vist ikke meget ud af at læse bin binære fil ind i en
variabel, hvor der kun er afsat 1 (en, one, uno) byte og så prøve at sende
den til webserveren - medmindre, naturligvis, at din binære fil kun _er_ en
byte lang.
Jeg foreslår følgende:
Public Sub Inet_Upload(ByVal strFile As String, ByVal uname As String)
Dim intFile As Integer
Dim strUrl As String
Dim strServerIp As String
Dim strServerPort As String
Dim strServerPage As String
Dim bytData() As Byte
Dim strHeaders As String
Dim strBoundary As String
Dim strCmd1 As String
Dim strCmd2 As String
strServerIp = "localhost"
strServerPort = "80"
strServerPage = "upload.php"
intFile = FreeFile
Open strFile For Binary Access Read Lock Read Write As intFile
ReDim bytData(1 To LOF(intFile))
Get intFile, , bytData
Close intFile
strBoundary = "---------------------------" & LCase(RndBoundary)
strCmd1 = strBoundary & vbCrLf & _
"Content-Disposition: form-data;name=""ufil""; filename=""" & _
strFile & """" & vbCrLf & _
"Content-Type:application/octet-stream" & vbCrLf & vbCrLf
strCmd2 = strBoundary & "--" & vbCrLf & vbCrLf
strHeaders = "POST /" & strServerPage & "?uname=" & _
frmMain.UserName & "HTTP/1.1" & vbCrLf & _
"Content-Type: multipart/form-data; boundary=" & strBoundary & _
vbCrLf & "Host: " & strServerIp & vbCrLf & _
"Accept: */*" & vbCrLf & _
"Content-Length: " & _
CStr(Len(strCmd1) + UBound(bytData) + Len(strCmd2)) & _
vbCrLf & "Connection: close" & vbCrLf & vbCrLf
With frmMain.Inet1
If .State <> sckClosed Then
.Close
End If
.LocalPort = 0
.RemotePort = strServerPort
.RemoteHost = strServerIp
.Connect
While .State <> sckConnected
DoEvents
Wend
.SendData strHeaders & strCmd1
.SendData bytData
.SendData strCmd2
End With
End Sub
-------
Tomas
| |
Morten Trab (04-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 04-01-04 11:47 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bt7j8t$115h$1@news.cybercity.dk...
> Public Sub Inet_Upload(ByVal strFile As String, ByVal uname As String)
> Dim intFile As Integer
> Dim strUrl As String
> Dim strServerIp As String
> Dim strServerPort As String
> Dim strServerPage As String
> Dim bytData() As Byte
> Dim strHeaders As String
> Dim strBoundary As String
> Dim strCmd1 As String
> Dim strCmd2 As String
>
> strServerIp = "localhost"
> strServerPort = "80"
> strServerPage = "upload.php"
>
> intFile = FreeFile
> Open strFile For Binary Access Read Lock Read Write As intFile
> ReDim bytData(1 To LOF(intFile))
> Get intFile, , bytData
> Close intFile
>
> strBoundary = "---------------------------" & LCase(RndBoundary)
> strCmd1 = strBoundary & vbCrLf & _
> "Content-Disposition: form-data;name=""ufil""; filename=""" & _
> strFile & """" & vbCrLf & _
> "Content-Type:application/octet-stream" & vbCrLf & vbCrLf
> strCmd2 = strBoundary & "--" & vbCrLf & vbCrLf
>
> strHeaders = "POST /" & strServerPage & "?uname=" & _
> frmMain.UserName & "HTTP/1.1" & vbCrLf & _
> "Content-Type: multipart/form-data; boundary=" & strBoundary & _
> vbCrLf & "Host: " & strServerIp & vbCrLf & _
> "Accept: */*" & vbCrLf & _
> "Content-Length: " & _
> CStr(Len(strCmd1) + UBound(bytData) + Len(strCmd2)) & _
> vbCrLf & "Connection: close" & vbCrLf & vbCrLf
>
> With frmMain.Inet1
> If .State <> sckClosed Then
> .Close
> End If
> .LocalPort = 0
> .RemotePort = strServerPort
> .RemoteHost = strServerIp
> .Connect
> While .State <> sckConnected
> DoEvents
> Wend
> .SendData strHeaders & strCmd1
> .SendData bytData
> .SendData strCmd2
> End With
> End Sub
Virker slet ikke!!
Med den kode kan den slet ikke forbinde til serveren, somom et eller andet
fejler undervejs, og dermed forhindre den i at lave forbindelsen...
Den kommer dog ikke med nogle fejlmeldinger...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Kenneth (04-01-2004)
| Kommentar Fra : Kenneth |
Dato : 04-01-04 14:18 |
|
Med alle de problemer du har med at sende data gennem inet controllen, vil
jeg anbefale at du benytter winsock controllen istedet. Jeg er ikke helt
sikker på fordelene ved inet controllen, men winsock kan både sende og
modtage i string format. Du skal selv parse de headere du får tilbage, men
hvis det bare er en kontrolkode, betyder det vel ikke noget.
Mvh, Kenneth
| |
Morten Trab (04-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 04-01-04 14:54 |
|
"Kenneth" <rayman_dk@email.com> skrev i en meddelelse
news:bt93qt$un5$1@news.cybercity.dk...
> Med alle de problemer du har med at sende data gennem inet controllen, vil
> jeg anbefale at du benytter winsock controllen istedet. Jeg er ikke helt
> sikker på fordelene ved inet controllen, men winsock kan både sende og
> modtage i string format. Du skal selv parse de headere du får tilbage, men
> hvis det bare er en kontrolkode, betyder det vel ikke noget.
Det ER winsock jeg bruger...Jeg gav den bare et andet navn, da jeg
oprindeligt brugte inet...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Kenneth (04-01-2004)
| Kommentar Fra : Kenneth |
Dato : 04-01-04 14:21 |
|
Og, jeg så lige at du havde connection: close med. Det har givet mig mange
problemer, da nogle af pakkerne bliver smidt væk når forbindelsen lukkes....
Mvh, Kenneth
> > strHeaders = "POST /" & strServerPage & "?uname=" & _
> > frmMain.UserName & "HTTP/1.1" & vbCrLf & _
> > "Content-Type: multipart/form-data; boundary=" & strBoundary & _
> > vbCrLf & "Host: " & strServerIp & vbCrLf & _
> > "Accept: */*" & vbCrLf & _
> > "Content-Length: " & _
> > CStr(Len(strCmd1) + UBound(bytData) + Len(strCmd2)) & _
> > vbCrLf & "Connection: close" & vbCrLf & vbCrLf
| |
Morten Trab (04-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 04-01-04 14:54 |
|
"Kenneth" <rayman_dk@email.com> skrev i en meddelelse
news:bt93vp$v09$1@news.cybercity.dk...
> Og, jeg så lige at du havde connection: close med. Det har givet mig mange
> problemer, da nogle af pakkerne bliver smidt væk når forbindelsen
lukkes....
Har prøvet både med og uden (altså med keep-alive) og det giver ingen
forskel i det her sammenhæng...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Kenneth (04-01-2004)
| Kommentar Fra : Kenneth |
Dato : 04-01-04 15:07 |
|
Har du prøvet at opsnappe en standard file transfer, af evt. en zip fil, og
så sende PRÆCIS de data til dit script? Serveren lukker som regel
forbindelsen, når den opdager en fejl i de data den modtager. Men så burde
den ikke køre scriptet....
Mvh. Kenneth
"Morten Trab" <mortenREMOVE@trab.dk> skrev i en meddelelse
news:bt95rg$6od$1@svr-1.homedir.dk...
>
> "Kenneth" <rayman_dk@email.com> skrev i en meddelelse
> news:bt93vp$v09$1@news.cybercity.dk...
>
> > Og, jeg så lige at du havde connection: close med. Det har givet mig
mange
> > problemer, da nogle af pakkerne bliver smidt væk når forbindelsen
> lukkes....
>
> Har prøvet både med og uden (altså med keep-alive) og det giver ingen
> forskel i det her sammenhæng...
>
> --
> Mvh. Morten Trab
> --
> Svar venligst kun i NG, med mindre det er MEGET vigtigt.
> Ved mail, slet REMOVE i min adresse.
>
> Web: http://www.blackchart.dk
>
>
| |
Tomas Christiansen (04-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 04-01-04 16:40 |
|
Morten Trab skrev:
> Virker slet ikke!!
Prøv at erstatte denne linie:
strCmd2 = strBoundary & "--" & vbCrLf & vbCrLf
med denne:
strCmd2 = vbCrLf & strBoundary & "--" & vbCrLf & vbCrLf
Jeg kan se at jeg vist har misset et vbCrLf.
Vil ikke afvise at der er andre fejl, idet jeg jo ikke rigtig har noget
testmiljø...
-------
Tomas
| |
Morten Trab (04-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 04-01-04 17:16 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bt9c10$1ea7$1@news.cybercity.dk...
> Prøv at erstatte denne linie:
> strCmd2 = strBoundary & "--" & vbCrLf & vbCrLf
> med denne:
> strCmd2 = vbCrLf & strBoundary & "--" & vbCrLf & vbCrLf
Ja, så virker det igen...Men slet ingen forskel i min egen kode og så den
her...Giver nøjagtigt samme resultat...Rundt regnet 5000 bytes bliver
sendt...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (04-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 04-01-04 17:40 |
|
Morten Trab skrev:
> Ja, så virker det igen...Men slet ingen forskel i min egen kode og så den
> her...Giver nøjagtigt samme resultat...Rundt regnet 5000 bytes bliver
> sendt...
Hvordan ser du hvor meget der bliver sendt?
-------
Tomas
| |
Morten Trab (04-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 04-01-04 17:49 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bt9fg4$1lnu$1@news.cybercity.dk...
> Hvordan ser du hvor meget der bliver sendt?
Har lavet et test program der lytter på port 80 og dumper ALT hvad der
bliver sendt til den ned i en fil på harddisken...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (04-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 04-01-04 18:07 |
|
Morten Trab skrev:
> Har lavet et test program der lytter på port 80 og dumper ALT hvad der
> bliver sendt til den ned i en fil på harddisken...
Fint nok. Du husker vel at modtage disse data i et bytearray?
Og angiver eksplicit at det skal opfattes som et sådan, dvs. noget i retning
af:
Dim bData() As Byte
Winsock1.GetData bData, vbArray Or vbByte
-------
Tomas
| |
Morten Trab (04-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 04-01-04 19:12 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bt9h3a$1ot3$1@news.cybercity.dk...
> Fint nok. Du husker vel at modtage disse data i et bytearray?
> Og angiver eksplicit at det skal opfattes som et sådan, dvs. noget i
retning
> af:
Tog dem egentligt som string...
> Dim bData() As Byte
> Winsock1.GetData bData, vbArray Or vbByte
vbByte = ~4000 bytes
vbArray = ~2000 bytes
vbArray OR vbByte = ~2000 bytes
vbString = ~5000 bytes
Så indtil vidre er vbstring bedste bud...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (04-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 04-01-04 20:43 |
|
Morten Trab skrev:
> Tog dem egentligt som string...
Dvs. at du slet ikke har overvejet effekten af den konvertering fra "ANSI"
til Unicode som (så vidt jeg kan se) udføres når du hælder det modtagne ind
i en streng.
Det er ihverfald klart dokumenteret ved afsendelse: "When a UNICODE string
is passed in, it is converted to an ANSI string before being sent out on the
network". Det modsatte må så ske ved modtagelsen.
> vbByte = ~4000 bytes
> vbArray = ~2000 bytes
> vbArray OR vbByte = ~2000 bytes
> vbString = ~5000 bytes
>
> Så indtil vidre er vbstring bedste bud...
Det lyder ikke sandsynligt.
-------
Tomas
| |
Morten Trab (04-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 04-01-04 21:13 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bt9q8e$2cqp$1@news.cybercity.dk...
> > vbByte = ~4000 bytes
> > vbArray = ~2000 bytes
> > vbArray OR vbByte = ~2000 bytes
> > vbString = ~5000 bytes
> >
> > Så indtil vidre er vbstring bedste bud...
>
> Det lyder ikke sandsynligt.
Ikke destomindre er det hvad jeg har fået som output... :(
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (04-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 04-01-04 21:44 |
|
Morten Trab skrev:
> > > Så indtil vidre er vbstring bedste bud...
> >
> > Det lyder ikke sandsynligt.
>
> Ikke destomindre er det hvad jeg har fået som output... :(
Det var din konklusion (at vbstring er det bedste bud), som jeg ikke kan
finde belæg for! Tværtimod, taler alt for at det IKKE er korrekt.
Nu satte jeg mig ned og lavede et lille program, som kan modtage data, og
det modtager da alt, hvad der sendes fra den kode, som jeg har foreslået dig
at bruge til at sende med. Det ser således ud (hvor ws betegner en Winsock
kontrol, som jeg har lagt på Form1):
Option Explicit
Private Const LogFileName As String = "Listen.log"
Private ConReq As Long
Private Sub Form_Load()
With ws
.Protocol = sckTCPProtocol
.LocalPort = 83
.Listen
LogText "Listen " & .LocalIP & " / " & .LocalPort
End With
End Sub
Private Sub ws_Close()
LogText "Close"
End Sub
Private Sub ws_Connect()
LogText "Connect"
End Sub
Private Sub ws_ConnectionRequest(ByVal requestID As Long)
LogText "ConnectionRequest " & CStr(requestID)
With ws
If .State <> sckClosed Then .Close
ConReq = requestID
.Accept requestID
End With
End Sub
Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim bData() As Byte
LogText "DataArrival " & CStr(bytesTotal)
ws.GetData bData, vbArray Or vbByte
LogData bData
End Sub
Private Sub ws_Error(ByVal Number As Integer, Description As String, ByVal
Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal
HelpContext As Long, CancelDisplay As Boolean)
LogText "Error " & CStr(Number) & " " & Description
End Sub
Private Sub ws_SendComplete()
LogText "SendComplete"
End Sub
Private Sub ws_SendProgress(ByVal bytesSent As Long, ByVal bytesRemaining As
Long)
LogText "SendProgress " & CStr(bytesSent) & "/" & CStr(bytesRemaining)
End Sub
Sub LogText(ByVal Text As String)
Dim iLog As Integer
iLog = FreeFile
Open LogFileName For Append As iLog
Print #iLog, Text
Close iLog
End Sub
Sub LogData(ByRef bData() As Byte)
Dim iBin As Integer
Dim Datafíle As String
Datafíle = "Data_" & Format(ConReq, "00000000") & ".bin"
LogText "Received " & CStr(UBound(bData) - LBound(bData) + 1) & " bytes of
data - written to file """ & Datafíle & """"
iBin = FreeFile
Open Datafíle For Binary As iBin
Put #iBin, 1 + LOF(iBin), bData
Close iBin
End Sub
Prøv det i stedet for dit eget "sniffer" program, og se hvad du kommer frem
til.
-------
Tomas
| |
Morten Trab (04-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 04-01-04 22:09 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bt9tr1$2lj9$1@news.cybercity.dk...
> Prøv det i stedet for dit eget "sniffer" program, og se hvad du kommer
frem
> til.
Ja, okay...Den kan modtage det hele...
Har nu ændret programmet så det sender til webserveren og dermed
scriptet...Men der virker det stadig ikke...
Med det snifferprogram kunne jeg desuden se at den sendte af 3 omgange, det
vil en webserver ikke godtage...Der er hver connection en "ny klient",
derfor skal det hele sendes i een og samme omgang...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (04-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 04-01-04 23:45 |
|
Morten Trab skrev:
> Med det snifferprogram kunne jeg desuden se at den sendte af 3 omgange,
det
> vil en webserver ikke godtage...Der er hver connection en "ny klient",
> derfor skal det hele sendes i een og samme omgang...
Du laver da kun én "connect":
.RemotePort = strServerPort
.RemoteHost = strServerIp
.Connect
At du sender af flere omgange med SendData, har da ingen betydning!
-------
Tomas
| |
Morten Trab (05-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 05-01-04 17:06 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bta4te$2j3$1@news.cybercity.dk...
> Du laver da kun én "connect":
>
> .RemotePort = strServerPort
> .RemoteHost = strServerIp
> .Connect
Ja...
> At du sender af flere omgange med SendData, har da ingen betydning!
Ja...Men alligevel...Når jeg sendet til sniffer-programmet kan jeg se at den
sender data 3 gange...(Har lavet et status linie der ændrer fra "forbundet
til server" til "sender data" og tilbage...Og den skifter 3 gange, ved
sniffer programmet...
Hvis jeg derimod sender til web-serveren, skifter den kun en gang, og så får
jeg "serveren lukkede forbindelsen" og den kommer sammen med svaret fra
scriptet...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (05-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 05-01-04 21:08 |
|
Morten Trab skrev:
> Ja...Men alligevel...Når jeg sendet til sniffer-programmet kan jeg se at
den
> sender data 3 gange...
> Hvis jeg derimod sender til web-serveren, skifter den kun en gang,
Der er mig bekendt med Microsoft's Winsock kontrol, ingen mulighed for at se
hvor mange pakker der sendes!
Du kan ikke regne med at de "afsendelser" som du ser på applikationsniveauet
svarer til hvor mange pakker der rent faktisk sendes på netværket, og du kan
ikke se ved modtagelsen hvor mange pakker der rent faktisk blev sendt over
netværket. Du kan sagtens få data i 3 store blokke, selvom de blev sendt
over 9 pakker. Det hænger sammen med at Winsock kontrollen har en buffer
både ved afsendelsen og ved modtagelsen, og hvordan den sender det videre
derfra, og hvordan netværket måtte opdele pakkerne i mindre pakker er du på
ingen måde herre over og du har ingen måde at kontrollere det på via din
winsock-applikation.
DET HAR HELLER INGEN BETYDNING!!!
Jeg skriver det igen: En TCP-forbindelse er en lind strøm af bytes (som godt
nok er opdelt i et antal pakker, men det er en anden sag).
Når en web-server mener, at nu har den set nok, så sender den et svar og
lukker forbindelsen. Hvis det man har sendt til den, ikke passer den, så
sender den en fejlmeddelelse, og den kan såmænd godt komme før man har sendt
alle data, hvis serveren på et tidligt tidspunkt opdager en fejl. Der er
formentlig nok også en timer, så der er begrænsning på hvor længe man må
være om at sende det hele, men tænk på at web-servere er bygget til at
klienter skal kunne køre på 300 bit/s modemmer (tror godt nok ikke at de ses
ret tit længere ).
-------
Tomas
| |
Morten Trab (05-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 05-01-04 21:47 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:btcg2l$24oo$1@news.cybercity.dk...
> Der er mig bekendt med Microsoft's Winsock kontrol, ingen mulighed for at
se
> hvor mange pakker der sendes!
Enig...
> Du kan ikke regne med at de "afsendelser" som du ser på
applikationsniveauet
> svarer til hvor mange pakker der rent faktisk sendes på netværket, og du
kan
> ikke se ved modtagelsen hvor mange pakker der rent faktisk blev sendt over
> netværket. Du kan sagtens få data i 3 store blokke, selvom de blev sendt
> over 9 pakker. Det hænger sammen med at Winsock kontrollen har en buffer
> både ved afsendelsen og ved modtagelsen, og hvordan den sender det videre
> derfra, og hvordan netværket måtte opdele pakkerne i mindre pakker er du
på
> ingen måde herre over og du har ingen måde at kontrollere det på via din
> winsock-applikation.
Enig igen...Det er bare den eneste forskel jeg umiddelbart kan se...
> Jeg skriver det igen: En TCP-forbindelse er en lind strøm af bytes (som
godt
> nok er opdelt i et antal pakker, men det er en anden sag).
Endnu engang enig...
> Når en web-server mener, at nu har den set nok, så sender den et svar og
> lukker forbindelsen. Hvis det man har sendt til den, ikke passer den, så
> sender den en fejlmeddelelse, og den kan såmænd godt komme før man har
sendt
> alle data, hvis serveren på et tidligt tidspunkt opdager en fejl. Der er
> formentlig nok også en timer, så der er begrænsning på hvor længe man må
> være om at sende det hele, men tænk på at web-servere er bygget til at
> klienter skal kunne køre på 300 bit/s modemmer (tror godt nok ikke at de
ses
> ret tit længere ).
Ja, men web-serveren kommer IKKE med en fejlmeddelse...Derimod lader den til
at få data uden fejl, men den godtager bare ikke den fil man uploader....
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (05-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 05-01-04 22:06 |
|
Morten Trab skrev:
> Ja, men web-serveren kommer IKKE med en fejlmeddelse...Derimod lader den
til
> at få data uden fejl, men den godtager bare ikke den fil man uploader....
Hvor sikker er du på at du overholder HTTP til punkt og prikke?
Hvis du kan opsnappe noget lignende fra "noget" som KAN finde ud at sende
korrekt (brug evt. det sniffer-program som jeg sendte), så har du nået at gå
videre med.
Du kan evt. prøve i en web-gruppe om nogen kan generere den slags for dig
eller om de kan checke syntaksen af det, som dit program sender til
web-serveren.
Hvis der mangler ét eller andet i din HTTP-kommunikation (det kan jo være så
simpelt som et linieskift), kan det måske være forklaringen på at
web-serveren ikke godtager det hele?
Jeg kan se at jeg er kommet til at fjerne mellemrum efter kolon i teksten
"Content-Type:application/octet-stream" i det forslag jeg sendte dig. Gør
det nogen forskel, hvis der bliver indsat et mellemrum her?
-------
Tomas
| |
Morten Trab (06-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 06-01-04 12:14 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:btcjgr$2b35$1@news.cybercity.dk...
> Hvis du kan opsnappe noget lignende fra "noget" som KAN finde ud at sende
> korrekt (brug evt. det sniffer-program som jeg sendte), så har du nået at
gå
> videre med.
Jeg lavede en lille test HTML fil, som kan bruges til fil upload, og pegede
den på snifferen...
> Du kan evt. prøve i en web-gruppe om nogen kan generere den slags for dig
> eller om de kan checke syntaksen af det, som dit program sender til
> web-serveren.
Jeg kunne se at HTML filen (IE) sendte et sæt headers EFTER filen var
sendt...
> Hvis der mangler ét eller andet i din HTTP-kommunikation (det kan jo være
så
> simpelt som et linieskift), kan det måske være forklaringen på at
> web-serveren ikke godtager det hele?
Jeg har efterlignet det ekstra sæt headers som den sendte via IE og forsøgt
med dem i også, men det virker heller ikke...Stadig det samme, med at
scriptet afvikles på serveren, men den mener ikke at den har modtaget nogle
filer...
> Jeg kan se at jeg er kommet til at fjerne mellemrum efter kolon i teksten
> "Content-Type:application/octet-stream" i det forslag jeg sendte dig. Gør
> det nogen forskel, hvis der bliver indsat et mellemrum her?
Ingen forskel der...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Morten Trab (06-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 06-01-04 13:15 |
|
Jeg har fået et modul der kan lige det jeg har brug for, fra andetsteds...
Men alligevel...Tak for hjælpen, selvom vi ikke fik det til at virke...
Ps. Modulet er bygget på API-kald til wininet.dll :)
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Tomas Christiansen (06-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 06-01-04 14:22 |
|
Morten Trab skrev:
> Jeg har fået et modul der kan lige det jeg har brug for, fra andetsteds...
> Men alligevel...Tak for hjælpen, selvom vi ikke fik det til at virke...
>
> Ps. Modulet er bygget på API-kald til wininet.dll :)
Det er vel ikke helt uinteressant at "sniffe" hvad dette modul gør, og
sammenligne med hvad du sendte?
Post evt. resultatet af et "snif" her.
-------
Tomas
| |
Morten Trab (06-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 06-01-04 15:23 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:btecnq$2ih4$1@news.cybercity.dk...
> Post evt. resultatet af et "snif" her.
Poster de 2 .bin filer i dk.binaer under samme emne som denne om et
øjeblik...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
|
|