DeadManWalking Skrevet 22. juni 2008 Del Skrevet 22. juni 2008 Jeg prøver å sende en http POST til en webside med en bildefil, jeg har laget hovedgreien og jeg får et OK fra serveren. Men bilde blir ikke registrert. Det er linux, jeg har skrevet det med sockets. Jeg har testet det med en basic request og jeg mottar siden jeg skal motta, så det fungerer. Det er bare et lite problem med dette bildet. Bildet blir lest inn i en array, også sendt bit for bit. Alt ser ut til å funke, bortsett fra at bildet ikke blir lagret!!! Noen som har erfaring med dette? Lenke til kommentar
GeirGrusom Skrevet 22. juni 2008 Del Skrevet 22. juni 2008 Du har sjekket at du sender med riktig MIME i headeren? Jeg laget en webserver fra scratch, men jeg fikk egentlig aldri dette problemet... Lenke til kommentar
DeadManWalking Skrevet 22. juni 2008 Forfatter Del Skrevet 22. juni 2008 Content-Type: multipart/form-data; boundary=---------------------------1149519608220081086621670699702 Noe sånt vel? Lenke til kommentar
GeirGrusom Skrevet 23. juni 2008 Del Skrevet 23. juni 2008 Dette går lenger en min webserver var beregnet for, men du må få sendt med mime-en til bildefila. Jeg regner med at dette går i en egen pakke, eller at det er et eget format på det, men jeg var ikke borti denne delen så mye, fordi min webserver hadde en helt annen funksjon. Så da kan jeg ikke hjelp Lenke til kommentar
steingrim Skrevet 23. juni 2008 Del Skrevet 23. juni 2008 Du kan jo se hva feks webbrowseren din sender når du gjør samme operasjon der. En fin sak for å debugge http-problemer er Fiddler2 (http://www.fiddler2.com/fiddler2/) -- ekstremt nyttig program for meg hvertfall. Lenke til kommentar
DeadManWalking Skrevet 23. juni 2008 Forfatter Del Skrevet 23. juni 2008 Ja, jeg sniffer tilkoblingen min lokalt. Også bruker jeg firefox addon Live HTTP headers, merkelig lite problem. Jeg brukt følgende side som kilde; JPEG image upload. Jeg diller videre med dette, er sikkert bare en bit som er feil et sted. Angående måten jeg leser inn og sender bildefilen på, kan noen bare bekrefte at jeg ikke har noen C++-språkfeil? char *bytes; ifstream bildet; bildet.open("av2.jpg", ios::in | ios::binary); long start, slutt, strrelse; start = bildet.tellg(); bildet.seekg (0, ios::end); slutt = bildet.tellg(); strrelse = slutt - start; bytes = new char [strrelse]; bildet.read(bytes, strrelse); bildet.close(); for (int i =0; i < strrelse; i++) { send(sockfd, &bytes,1,0); } Ser det greit ut :/ ? Lenke til kommentar
GeirGrusom Skrevet 23. juni 2008 Del Skrevet 23. juni 2008 (endret) hmmm synes den send funksjonen din ser litt snuskete ut... nå vet ærlig talt ikke jeg syntaksen på send funksjonen du bruker, men skal det ikke heller være send(sockfd, bytes, strrelse, 1); eller noe? jeg regner med at den er lik som fread, dvs. send([socket handle],[array], [chunk_size], [chunks]) og hvis du sier at det er 0 chunks, så vil vel ikke funksjonen sende noe som helst? Endret 23. juni 2008 av GeirGrusom Lenke til kommentar
DeadManWalking Skrevet 23. juni 2008 Forfatter Del Skrevet 23. juni 2008 ssize_t send(int s, const void *buf, size_t len, int flags); Det siste tallet er bare et flagg, null funker jo når jeg sender headeren og serveren godtar jo headeren. Lenke til kommentar
GeirGrusom Skrevet 23. juni 2008 Del Skrevet 23. juni 2008 Ok. Men det er vel ihvertfall ikke nødvendig å sende ett og ett byte av gangen. Da er jeg gått tom for idéer igjen. Lenke til kommentar
DeadManWalking Skrevet 23. juni 2008 Forfatter Del Skrevet 23. juni 2008 Jeg har fikset koden sånn at den sender hele bildet med engang, mye mer praktisk og raskere. En ting jeg ligger merke til når jeg ngrepper output fra mitt program og firefox, så formateres bildetdataene som prikker via mitt program og som mange rare bokstaver via firefox. Hva kan dette komme av? Er det noe gale med bildedataene da kanskje? Nå får jeg iallefall respons ved at bildet som er lagret forsvinner, uten at det nye blir registrert. Og enda en liten teit ting jeg burde ha sett før, serveren svarer ikke HTTP ok til firefox. Den svarer; HTTP/1.1 302 Found. Ergo, jeg tipper det er noe gale med måten bildet blir overført på. Kanskje formatering som ødelegger noe? Lenke til kommentar
Manfred Skrevet 24. juni 2008 Del Skrevet 24. juni 2008 Du burde vel fått HTTP/1.1 200 OK, strengt tatt. 10.3.3 302 Found The requested resource resides temporarily under a different URI. Since the redirection might be altered on occasion, the client SHOULD continue to use the Request-URI for future requests. This response is only cacheable if indicated by a Cache-Control or Expires header field. The temporary URI SHOULD be given by the Location field in the response. Unless the request method was HEAD, the entity of the response SHOULD contain a short hypertext note with a hyperlink to the new URI(s). If the 302 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued. Note: RFC 1945 and RFC 2068 specify that the client is not allowed to change the method on the redirected request. However, most existing user agent implementations treat 302 as if it were a 303 response, performing a GET on the Location field-value regardless of the original request method. The status codes 303 and 307 have been added for servers that wish to make unambiguously clear which kind of reaction is expected of the client. Lenke til kommentar
DeadManWalking Skrevet 24. juni 2008 Forfatter Del Skrevet 24. juni 2008 Det er OK jeg får via mitt program, det er firefox så får den found greien. Får gå igjennom headeren en gang til. Lenke til kommentar
DeadManWalking Skrevet 26. juni 2008 Forfatter Del Skrevet 26. juni 2008 Greit, jeg er litt nærmere nå. Content-length i headeren, altså lengden på body + binary data burde være statisk så lenge det er samme bildet jeg prøver å laste opp right? Uansett, når jeg sniffer firefox. Og prøver å uploade samme bilde som med programmet mitt så stemmer ikke Content-length, den er ikke det samme. Den burde jo være identisk? Jeg vet at hele bildet blir lest inn i arrayen, jeg har skrevet arrayen til en fil og åpnet den. Den er intakt, så da lurer jeg fælt på hvordan jeg ikke får samme content-length som firefox gjør. Gzip gjelder jo bare filer fra serveren(i hovedsak html) og ikke fra klienten, så den burde ikke være komprimert eller noe. Firefox har selvfølgelig en større og mer innholdsrik header, men det har ingenting å si. Content-length omfatter bare postdata og ikke headeren. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå