Hacemos una verificación completa cada sección en nuestro espacio con el objetivo de mostrarte siempre información veraz y actualizada.
Solución:
Debe restablecer la posición de la secuencia antes de copiar.
outStream.Position = 0;
outStream.CopyTo(fileStream);
Usaste el outStream
al guardar el archivo usando el imageFactory
. Esa función llenó el outStream
. Mientras poblaba el outStream
la posición se establece al final del área poblada. Eso es para que cuando siga escribiendo bytes en Steam, no anule los bytes existentes. Pero luego, para leerlo (para fines de copia), debe establecer la posición al principio para que pueda comenzar a leer desde el principio.
Si su objetivo es simplemente volcar el flujo de memoria en un archivo físico (por ejemplo, para ver el contenido), puede hacerlo en un solo movimiento:
System.IO.File.WriteAllBytes(@"C:\filename", memoryStream.ToArray());
Tampoco es necesario establecer primero la posición de la transmisión, ya que la operación .ToArray() la ignora explícitamente, según el comentario de @BaconBits a continuación https://docs.microsoft.com/en-us/dotnet/api/system.io.memorystream .toarray?view=netframework-4.7.2.
Otra alternativa a CopyTo
es WriteTo
.
Ventaja:
No es necesario restablecer la posición.
Uso:
outStream.WriteTo(fileStream);
Función descriptiva:
Escribe todo el contenido de este flujo de memoria en otro flujo.