1

为什么此操作会导致客户端出现空文件?

公共文件结果下载()
{

    MemoryStream 流 = 新的 MemoryStream();
    StreamWriter writer = new StreamWriter(stream);

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

    writer.WriteLine("此文本丢失!!!:(");

    writer.Flush();
    流。冲洗();

    返回 fs;                  
}

4

2 回答 2

6

这可能是因为当您将底层流(在您的情况下为 MemoryStream)返回给客户端时,它没有位于开头。

在 return 语句之前试试这个:

stream.Position = 0

此外,这些代码行:

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

不需要,因为流是基于内存的。您只需要那些可能仍然需要写入的字节的磁盘或网络流。

于 2013-06-24T20:26:34.137 回答
1

你也可以使用

stream.Seek(0, SeekOrigin.Begin);
于 2013-06-24T20:29:31.487 回答