Back to Basics – Reading a File into Memory Stream
Today, I was asked to help a developer with a simple task she had. That task included reading an image file into a memory stream in order to send the image through an e-mail attachment. This post will show you how to do exactly that.
Reading a File into Memory Stream
Here is the code for reading the file into a memory stream:
using (FileStream fileStream = File.OpenRead(filePath))
{
MemoryStream memStream = new MemoryStream();
memStream.SetLength(fileStream.Length);
fileStream.Read(memStream.GetBuffer(), 0, (int)fileStream.Length);
}
That’s it for the reading part. Pay attention to use the using
statement in order to dispose the FileStream
after you use it.
Adding a MemoryStream as Attachment to a MailMessage
In order to use a stream as an attachment for an e-mail message object, all you have to do is to write the following code:
msg.Attachments.Add(new Attachment(memStream, filename, MediaTypeNames.Image.Jpeg));
In the code sample, msg
is an instance of a MailMessage
class, memStream
is the MemoryStream
(such as the memory stream from the previous code sample) and filename
is the name of the file in the attachment. Since I know that the image is jpeg, then I use the MediaTypeNames.Image.Jpeg.
Summary
Reading a file into a stream is a very basic thing to know. In the post, I showed how to read an image into a memory stream and also how to attach it into a mail message object.
Gil Fink is a web development expert and ASP.Net/IIS Microsoft MVP. He is the founder and owner of sparXys. He is currently consulting for various enterprises and companies, where he helps to develop Web and RIA-based solutions. He conducts lectures and workshops for individuals and enterprises who want to specialize in infrastructure and web development. He is also co-author of several Microsoft Official Courses (MOCs) and training kits, co-author of "Pro Single Page Application Development" book (Apress) and the founder of Front-End.IL Meetup. You can read his publications at his website: http://www.gilfink.net