Datei wird nicht richtig


okoman

Grünschnabel
Datei wird nicht richtig gespeichert

Ich habe ein kleines Problemchen. Ich habe einen funktionierenden System.Network.Sockets.NetworkStream. Ich kann dort auch wunderbar Dateien auslesen, wenn ich z.B. welche von einem Webserver anfordere. Wenn ich jetzt aber Binärdaten bekomme (z.B. ein JPG-Bild), wird die Datei nicht richtig abgespeichert. Eigendlich denke ich mir, dass die Datei doch mit
Code:
fs.WriteByte(stream.ReadByte())
übernommen werden müssten, wenn man mal von dem Responseheader absieht. fs wäre hierbei ein FileStream und stream der NetworkStream.
Damit ihr seht, was nicht passt hab ich im Anhang den Vergleichsbericht von Beyond Compare. Dabei wird die originale Bilddatei mit der erstellten verglichen.

Hoffe mal, ihr könnt mir helfen.
mfg oko

edit: Sorry, hab den Titel ein bisschen verkürzt :-(
 

Anhänge

Zuletzt bearbeitet:

Alexander Schuc

crazy-weasel
Mh,

dieses Tool scheint nicht für binärvergleiche gedacht sein, oder?

Najo, sag mal wie groß die originale Datei ist, und wie groß die neu erstellte.
Könntest dir auch mal mit nem HEX-Editor die Dateien ansehen und vergleichen.

MfG,
Alex
 

okoman

Grünschnabel
Also wenn man den Header raus nimmt ist die Datei genau so groß wie das Original (147900 Byte) Ich werd mir das mal mit einem HEX-Editor anschauen. Hab ich noch nicht gemacht, weil ich mir denke, dass ich so auch nicht herausfinden kann, wieso das nicht geht. Ich werds jetzt jedenfalls mal machen.
 

okoman

Grünschnabel
Tja, so kann amns ich täuschen. Es ist also so, dass immer wenn ReadByte() eine 0 hervor bringt, eine 20 gespeichert wird. Es liegt auch wirklich am speichern, denn wenn ich WriteByte() nur Nullen übergebe, speichert er immer Leerzeichen. Auch wenn ich versuche, die Datei mit einem BinaryWriter zu speichern.

Ideen?

PS: So wie ich das sehe kann man aber bei der Webclient Klasse den Requestheader nicht beeinflussen? Ich muss z.B. so etwas wie Referer angeben können.
 
Zuletzt bearbeitet: