When I have uploaded an image from my website I need to do 2 things:
- read the image dimensions
- save the image to the database
the first thing I do is reading the image stream into an Image object, like so:
var file = Request.Files["logo"]; Image FullsizeImage = Image.FromStream(file.InputStream);
the next thing I do is to save the “file” object to the database (LINQ to SQL). BUT, when I try to save the image to database, the stream from the file has it’s postion at the end of the stream, and it seems no data is present.
I know I should somwhow reset the stream and put it back into position 0, but how do I do that the most effiecent and correct way ?
Well, the simplest way is:
file.InputStream.Position = 0;
… assuming the stream supports seeking. However, That may do interesting things to the
Image if you’re not careful – because it will have retained a reference to the stream.
You may be best off loading the data into a byte array, and then creating two separate
MemoryStream objects from it if you still need to. If you’re using .NET 4, it’s easy to copy one stream to another:
MemoryStream ms = new MemoryStream(); Request.Files["logo"].InputStream.CopyTo(ms); byte data = ms.ToArray();