2013-06-24 34 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)在您將其返回給客戶端時未定位在開始位置。

試試這個只是return語句之前:

stream.Position = 0 

而且,這幾行代碼:

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

是不是必需的,因爲流是基於內存。您只需要那些可能需要寫入字節的磁盤或網絡流。

+0

謝謝!工作正常 ! – Mauro

1

您還可以使用

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

謝謝!工作正常 ! – Mauro

相關問題