【问题标题】:Why this action results an empty file on client side?为什么此操作会导致客户端出现空文件?
【发布时间】:2013-06-21 11:34:46
【问题描述】:

为什么这个操作会在客户端产生一个空文件??

公共文件结果下载() { MemoryStream 流 = 新的 MemoryStream(); StreamWriter writer = new StreamWriter(stream); FileStreamResult fs = new FileStreamResult(stream, "text/plain"); fs.FileDownloadName = "file.txt"; writer.WriteLine("此文本丢失!!!:("); writer.Flush(); 流。冲洗(); 返回 fs; }

【问题讨论】:

  • 我认为代码是不言自明的。
  • 可能是因为您在返回之前刷新了 strem?

标签: asp.net-mvc streamwriter memorystream fileresult


【解决方案1】:

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

在 return 语句之前试试这个:

stream.Position = 0

另外,这些代码行:

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

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

【讨论】:

    【解决方案2】:

    你也可以使用

    stream.Seek(0, SeekOrigin.Begin);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 2017-01-01
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多