我正在使用以下代码保存上传的图片:
using (var fileStream = File.Create(savePath))
{
stream.CopyTo(fileStream);
}
当图像保存到目标文件夹时,它是空的,0 kb。这可能有什么不对吗?我在复制之前检查了stream.Length并且它不是空的。
答案 0 :(得分:61)
您的代码没有任何问题。事实上,你说“我已经检查了stream.Length,然后复制并且它不是空的”让我在复制前对流位置感到疑惑。
如果你已经消耗了一次源流,那么虽然流的长度不是零,但它的位置可能在流的末尾 - 所以没有什么可以复制。
如果该流是可搜索的(适用于MemoryStream
或FileStream
以及许多其他人),请尝试添加
stream.Position = 0
就在复制之前。这会将流位置重置为开头,这意味着整个流将由您的代码复制。
答案 1 :(得分:1)
我建议将以下内容放在MultiValueDictKeyError
CopyTo()
请确保在此之后使用fileStream.Position = 0
,以避免复制后出现空文件。
Flush()
答案 2 :(得分:0)
从我的项目从.NET Core 1迁移到2.2之后,这个问题开始出现。
我通过将文件流的Position
设置为零来解决此问题。
using (var fileStream = new FileStream(savePath, FileMode.Create))
{
fileStream.Position = 0;
imageFile.CopyToAsync(fileStream);
}