当我从我的网站上传图片后,我需要做两件事:
- 阅读图片尺寸
- 保存图片到数据库
我做的第一件事是将图像流读入 Image 对象,如下所示:
var file = Request.Files["logo"];
Image FullsizeImage = Image.FromStream(file.InputStream);
接下来我要做的是将"file"对象保存到数据库 (LINQ to SQL)。但是,当我尝试将图像保存到数据库时,文件中的流位于流的末尾,而且似乎不存在任何数据。
我知道我应该以某种方式重置流并将其放回位置 0,但我该如何以最有效和正确的方式做到这一点?
最佳答案
嗯,最简单的方法是:
file.InputStream.Position = 0;
...假设流支持搜索。但是,如果您不小心,这可能会对 Image
做一些有趣的事情 - 因为它会保留对流的引用。
最好将数据加载到字节数组中,然后在需要时从中创建两个单独的 MemoryStream
对象。如果您使用的是 .NET 4,则可以轻松地将一个流复制到另一个流:
MemoryStream ms = new MemoryStream();
Request.Files["logo"].InputStream.CopyTo(ms);
byte[] data = ms.ToArray();
关于c# - 读流两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4266448/