2012-02-19 7 views
19

sto risparmiando un'immagine caricata utilizzando questo codice:stream.CopyTo - file vuoto. asp.net

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

Quando l'immagine viene salvata nella cartella di destinazione, è vuoto, 0 kb. Cosa potrebbe essere sbagliato qui? Ho controllato lo stream.Lunghezza prima di copiare e non è vuota.

+2

Possiamo vedere il tuo codice dove carichi il flusso originale per favore? Inoltre, prova a inserire lo stream line.Seek (0, SeekOrigin.Begin); appena prima della tua copia per assicurarti di essere all'inizio dello stream originale. – dash

risposta

52

Non c'è niente di sbagliato nel codice. Il fatto che tu dica "Ho controllato lo stream.Lunghezza prima di copiare e non è vuoto" mi fa meravigliare della posizione dello dello stream prima di copiare.

Se hai già utilizzato il flusso di origine una volta, sebbene il flusso non sia a lunghezza zero, la sua posizione potrebbe trovarsi alla fine dello stream, quindi non è rimasto nulla da copiare.

Se il flusso è ricercabile (che sarà per un MemoryStream o un FileStream e molti altri), prova a mettere

stream.Position = 0 

poco prima della copia. Questo ripristina la posizione del flusso all'inizio, il che significa che l'intero stream verrà copiato dal tuo codice.

+2

+1 - sarei molto sorpreso se non fosse questo :-) – dash

+2

Impari qualcosa di nuovo ogni giorno! In effetti lo era. Grazie molto! :) – user1121487

+0

+1 per quel suggerimento !!! –