2013-06-24 4 views
1

Почему это действие приводит к пустым файлам на стороне клиента?Почему это действие приводит к пустым файлам на стороне клиента?

 

public FileResult download() 
{ 

    MemoryStream stream = new MemoryStream(); 
    StreamWriter writer = new StreamWriter(stream); 

    FileStreamResult fs = new FileStreamResult(stream, "text/plain"); 
    fs.FileDownloadName = "file.txt"; 

    writer.WriteLine("this text is missing !!! :("); 

    writer.Flush(); 
    stream.Flush(); 

    return fs;     
} 

+0

Я думаю, что код не требует пояснений. – Praveen

+0

Возможно, потому, что вы сбросили strem перед возвратом? – YD1m

ответ

6

Это может быть потому, что основной поток (в вашем случае MemoryStream) не находится в самом начале, когда вы вернетесь к клиенту.

Попробуйте это как раз перед обратным утверждением:

stream.Position = 0 

Кроме того, эти строки кода:

writer.Flush(); 
stream.Flush(); 

Не требуются, поскольку поток памяти на основе. Вам нужны только те, которые предназначены для дисков или сетевых потоков, где могут быть байты, которые все еще требуют записи.

+0

Спасибо! Работает отлично ! – Mauro

1

Вы также можете использовать

stream.Seek(0, SeekOrigin.Begin); 
+0

Спасибо! Работает отлично ! – Mauro