stream.CopyTo - 文件为空.asp.net

use*_*487 27 c# asp.net filestream

我正在使用此代码保存上传的图像:

using (var fileStream = File.Create(savePath))
{
   stream.CopyTo(fileStream);
}
Run Code Online (Sandbox Code Playgroud)

当图像保存到目标文件夹时,它是空的,0 kb.这可能有什么不对吗?我在复制之前检查了stream.Length并且它不是空的.

Rob*_*ine 68

您的代码没有任何问题.事实上,你说"我已经检查了stream.Length,然后复制并且它不是空的"让我对复制前的流位置感到疑惑.

如果您已经消耗了一次源流,那么虽然该流的长度不是零,但它的位置可能位于流的末尾 - 因此没有任何内容可以复制.

如果流是可搜索的(它将是一个MemoryStreamFileStream许多其他人),请尝试推送

stream.Position = 0
Run Code Online (Sandbox Code Playgroud)

就在复制之前.这会将流位置重置为开头,这意味着整个流将由您的代码复制.

  • +1 - 如果不是这样会非常惊讶:-) (2认同)
  • 你每天学习新的东西!确实如此.非常感谢!:) (2认同)