stream.CopyTo – 文件为空。 asp.net

我正在使用以下代码保存上传的图片:

using (var fileStream = File.Create(savePath)) { stream.CopyTo(fileStream); } 

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

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

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

如果流是可搜索的(它将用于MemoryStreamFileStream以及许多其他流),请尝试使用

 stream.Position = 0 

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