Salut merci pour la contribution de tout le monde. Il s'avère que l'erreur a été causée par une erreur dans la méthode d'encodage. La méthode était
/// <summary>
/// Compress file data and then base64s the compressed data for safe transportation in XML.
/// </summary>
/// <returns>Base64 string of file chunk</returns>
private string GetFileChunk()
{
// MemoryStream for compression output
using (MemoryStream compressed = new MemoryStream())
{
using (GZipStream zip = new GZipStream(compressed, CompressionMode.Compress))
{
// read chunk from file
byte[] plaintext = new byte[this.readSize];
int read = this.file.Read(plaintext, 0, plaintext.Length);
// write chunk to compreesion
zip.Write(plaintext, 0, read);
plaintext = null;
// Base64 compressed data
return Convert.ToBase64String(compressed.ToArray());
}
}
}
La ligne de retour doit être inférieure à l'aide de flux permettant de compression pour fermer et chasse d'eau, cela a causé le comportement incohérent lorsque décompressé le cours d'eau.
/// <summary>
/// Compress file data and then base64s the compressed data for safe transportation in XML.
/// </summary>
/// <returns>Base64 string of file chunk</returns>
private string GetFileChunk()
{
// MemoryStream for compression output
using (MemoryStream compressed = new MemoryStream())
{
using (GZipStream zip = new GZipStream(compressed, CompressionMode.Compress))
{
// read chunk from file
byte[] plaintext = new byte[this.readSize];
int read = this.file.Read(plaintext, 0, plaintext.Length);
// write chunk to compreesion
zip.Write(plaintext, 0, read);
plaintext = null;
}
// Base64 compressed data
return Convert.ToBase64String(compressed.ToArray());
}
}
Merci pour l'aide de tout le monde.
La première copie ne remplit pas le flux; obtenir le même comportement avec la méthode read. Le GZipStream est un Microsoft classe surly il n'y a pas une erreur dans la classe? –
Hmm êtes-vous sûr à 100%. Read est une autre question entièrement le contrat sur la méthode de lecture dit qu'il n'est pas garanti de retourner la quantité d'octets demandés, mais la documentation CopyTo ne fait pas la même réclamation, mais peut-être utilise la méthode Read en interne. Avez-vous essayé de l'utiliser dans une boucle ex par l'exemple sur la page MSDN Stream.Read http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx –
Ya a commencé avec une boucle , le premier appel à lire renvoie 0, les appels suivants à lire les octets de retour jusqu'à la fin. –