15. august 2005 - 09:49Der er
8 kommentarer og 1 løsning
GDI+: Upload af billede fejler
Jeg har en webside hvor man kan uploade nogle billeder der bliver gemt i en SQL server. Alt virker fint, men jeg har villet lave lidt om for nyligt, men er nu stødt på følgende problem:
Når jeg tager fat i den stream der kommer fra websiden til serveren skal stream konverteres til en bytearray, hvilket jeg indtil videre bare har gjort ved at kalde Read() funktionen på streamobjektet like so:
Stream instream = file.PostedFile.InputStream; int lenght = file.PostedFile.ContentLength; byte[] b = new byte[lenght]; int testlenght = instream.Read(b, 0, lenght);
Problemet opstod i at jeg ikke kunne loade mit billede senere fra SQL serveren. Nu har jeg så fundet ud af at Read der returnere en int (antal bytes der er blevet læst) ikke læser det hele. Lengt for billedet der uploades er i en test ca. 3,9 MB men når jeg læser testlenght variablen ender den på ca. 2,8 MB!!! Dette sker selvom lenght er sat til 3,9 og byte[] er initialiseret til samme som lenght og offset er sat til 0.
Jeg fatter det ikke og er derfor åben for alle eventuelle svar.
Udemærket ide. Desværre resulterer det blot i at jeg ender i en uendelig løkke. Anden gang jeg ryger igennem while løkken læses der nemlig tilsyneladende ingen bytes og jeg kommer derfor aldrig videre.
Det ville jo umiddelbart betyde at der ikke er mere indhold i instream, men ikke desto mindre er ContentLenght ca. 1MB større end det der bliver læst. Det er meget mystisk.
Prøv at sætte din instream.Position=0 inden du går ind i løkken således at du er sikker på at du starter fra starten af streamen. Det er bare gætværk, men der mangler jo en del bytes et eller andet sted, hvis vi er sikre på at klienten rent faktisk sender det antal bytes som content-lenght siger.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.