Christian Kusmanow
Erfahrenes Mitglied
Hallo FIAE's!
Ich hab diesmal ein richtig kompliziertes Problem.
Ich möchte eine WMV-Datei in den speicher laden und via SOAP zu Server schicken. Das kuriose dabei ist das schon mal ohne Probleme geklappt hat, und jetzt nicht mehr. Wenn die Datei angekommen ist, ist sie nicht mehr lesbar.
Ich hatte die notwendigen Methoden vor kurzer Zeit schon fertig implementiert.
Einlesen der Datei:
Zum testen hab ich die eingelesenen Bit's wieder in einen anderen FileStream geschrieben und Datei unter einen anderen Namen gespeichert.
Danach war die Datei auch unbrauchbar.
So hab ich den Buffer wieder auf die Platte geschrieben:
Kann mir jemand verraten was hier schief gegangen ist?
Ich bin mir ganz sicher das kein Bit ausgelassen wurde.
Ich hab diesmal ein richtig kompliziertes Problem.
Ich möchte eine WMV-Datei in den speicher laden und via SOAP zu Server schicken. Das kuriose dabei ist das schon mal ohne Probleme geklappt hat, und jetzt nicht mehr. Wenn die Datei angekommen ist, ist sie nicht mehr lesbar.
Ich hatte die notwendigen Methoden vor kurzer Zeit schon fertig implementiert.
Einlesen der Datei:
Code:
fin = new FileStream( Dir + FileName, FileMode.Open, FileAccess.Read );
// Hilfs-Variablen Initialisierung
byte[] rdBuffer = new byte[ 4096 ];
WmvFileBuffer = new byte[ fin.Length ];
long rdlen = 0;
long totlen = fin.Length;
int len;
// 4096 Bit-weise auslesen, entschlüsseln und in den "WmvFileBuffer" kopieren.
while( rdlen < totlen ) {
len = fin.Read( rdBuffer, 0, 4096 );
if ( len == 4096 )
rdBuffer.CopyTo(WmvFileBuffer,rdlen);
else
rdBuffer.CopyTo(WmvFileBuffer,rdlen - ( 4096 - len ));
rdlen = rdlen + len;
}
fin.Close();
Zum testen hab ich die eingelesenen Bit's wieder in einen anderen FileStream geschrieben und Datei unter einen anderen Namen gespeichert.
Danach war die Datei auch unbrauchbar.
So hab ich den Buffer wieder auf die Platte geschrieben:
Code:
fout = new FileStream( Dir+"test.wmv", FileMode.Create, FileAccess.Write );
while( rdlen < totlen ) {
if ( rdlen < WmvFileBuffer.Length - 4096 )
fout.Write( WmvFileBuffer, 0, 4096 );
else
fout.Write( WmvFileBuffer, 0, WmvFileBuffer.Length - rdlen );
rdlen = rdlen + 4096;
}
fout.Close();
Kann mir jemand verraten was hier schief gegangen ist?
Ich bin mir ganz sicher das kein Bit ausgelassen wurde.