[英]stream.CopyTo - file empty. asp.net
我正在使用以下代碼保存上傳的圖像:
using (var fileStream = File.Create(savePath))
{
stream.CopyTo(fileStream);
}
當圖像保存到其目標文件夾時,它是空的,0 kb。 這里可能有什么問題? 我在復制之前檢查了 stream.Length 並且它不是空的。
您的代碼沒有任何問題。 你說“我在復制之前檢查了 stream.Length 並且它不是空的”這一事實讓我想知道復制前的流位置。
如果您已經使用過一次源流,那么盡管該流的長度不是零,但它的位置可能位於流的末尾 - 所以沒有什么可復制的了。
如果流是可查找的(它將用於MemoryStream
或FileStream
和許多其他流),請嘗試放置
stream.Position = 0
就在副本之前。 這會將流位置重置為開頭,這意味着您的代碼將復制整個流。
我建議將以下內容放在CopyTo()
之前
fileStream.Position = 0
確保在此之后使用Flush()
,以避免復制后出現空文件。
fileStream.Flush()
在將我的項目從 .NET Core 1 遷移到 2.2 后,我開始遇到這個問題。
我通過將文件流的Position
設置為零來解決此問題。
using (var fileStream = new FileStream(savePath, FileMode.Create))
{
fileStream.Position = 0;
await imageFile.CopyToAsync(fileStream);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.