为什么此操作会在客户端产生空文件?
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 :(得分:6)
可能是因为当您将其返回给客户端时,底层流(在您的情况下是一个MemoryStream)不会位于开头。
在return语句之前尝试:
stream.Position = 0
此外,这些代码行:
writer.Flush();
stream.Flush();
不需要,因为流是基于内存的。您只需要那些可能存在仍需要写入的字节的磁盘或网络流。
答案 1 :(得分:1)
您也可以使用
stream.Seek(0, SeekOrigin.Begin);