当我尝试从高清阅读文件时
FileInfo fi = new FileInfo(ofd.FileName);
if (fi.Exists)
FileStream stream = fi.Open(FileMode.Open, FileAccess.Read);
当我检查我的stream.Position和stream.Length时,它们都是相同的。一般来说,我希望stream.Position应为零。因为我还没有读过流中的内容。
但是我可以看到stream.Position在流中的最后位置。由于Position和Length之间没有区别,当我尝试使用UploadFromStream(stream)将文件上传到BLOB时,它失败了。当然,我有另一个解决方法来使代码工作。但我要问的是为什么我必须重置上传文件到BLOB的位置。
答案 0 :(得分:0)
默认的FileStream行为是stream.position将设置为0,除非您已阅读内容。如果您只是将代码仅用于测试,您将看到stream.position设置为0,但stream.length = 0xLENGTH。我刚刚测试了你的代码如下,我可以看到完全相同的结果。
string filename = @"c:\2012\Procmon.exe";
FileInfo fi = new FileInfo(filename);
FileStream stream = fi.Open(FileMode.Open, FileAccess.Read);
当您将stream作为参数传递给函数时,我遇到了类似的事件,在这种情况下,流位置一直设置为流长度,这与您的情况非常相似。这个SO discussion讨论了与你类似的情况。