2012-02-19 27 views
19

estoy ahorrando una imagen cargada utilizando este código:stream.CopyTo - archivo vacío. asp.net

using (var fileStream = File.Create(savePath)) 
{ 
    stream.CopyTo(fileStream); 
} 

Cuando la imagen se guarda en la carpeta de destino, que está vacío, 0 kb. ¿Qué podría estar mal aquí? Revisé la transmisión. Longitud antes de copiar y no está vacía.

+2

¿Podemos ver su código donde carga la transmisión original, por favor? Además, intente insertar el flujo de línea. Buscar (0, SeekOrigin.Begin); justo antes de su copia para asegurarse de que está al comienzo de la transmisión original. – dash

Respuesta

52

No hay nada de malo en su código. El hecho de que diga "He comprobado el flujo. Longitud antes de copiar y no está vacío" hace que me pregunte sobre la posición de la corriente antes de copiar.

Si ya consumió el flujo de origen una vez, aunque la transmisión no sea de longitud cero, su posición puede estar al final de la secuencia, por lo que no queda nada por copiar.

Si la corriente es reubicable (que será para un MemoryStream o una FileStream y muchos otros), trate de poner

stream.Position = 0 

justo antes de la copia. Esto restablece la posición de la secuencia al principio, lo que significa que el código copiará toda la secuencia.

+2

+1 - estaría muy sorprendido si no fuera esto :-) – dash

+2

¡Aprende algo nuevo todos los días! De hecho fue. ¡Muchas gracias! :) – user1121487

+0

+1 para esa pista !!! –

Cuestiones relacionadas